python中基本数据类型的子类化

2024-06-28 20:03:27 发布

您现在位置:Python中文网/ 问答频道 /正文

我想对python3中的float数据类型进行子类化。我的目标是生成一个返回其原始值的变量,+/-某个范围。通过其他讨论,我知道我可以:

class MonteCarloVariable(float):

    def __new__(cls, mean, std):
        val = np.random.normal(mean, std)
        return super(MonteCarloVariable, cls).__new__(cls, val)

这给了我:

>>> a = MonteCarloVariable(10, 2)
>>> a
7.5

我想要的是,a每次使用它时都会改变值。i、 电子邮件:

>>> a
9.3
>>> a
11.6

。。。等等

如果这是不可能的,我将如何添加一个函数来强制更改?比如:

>>> a
7.5
>>> a.roll()
>>> a
10.1

我尝试将float子类化的原因是我不想重新定义每个__add____sub__类型的函数。你知道吗


Tags: 函数目标newdefnprandomvalfloat