Python 属性作为所有数值运算的默认操作数

Python 属性作为所有数值运算的默认操作数,python,class,Python,Class,我想在Python类中定义一个属性,该属性将用于所有的数值运算(\uuuuuuuuuuuuuuuuuuu,\uuuuuuuuuuuuuuu等): 在上面的类中,我想在所有数值运算中使用属性oper。例如,我想实现以下行为: >>> Example(1, 2) + Example(3, 4) 4 >>> 3 * Example(2, 10) 6 为了做到这一点,我是否需要实现我想要的每一个数值运算函数(\uuuuu add\uuuuuu,\uuuuu mul\

我想在Python类中定义一个属性,该属性将用于所有的数值运算(
\uuuuuuuuuuuuuuuuuuu
\uuuuuuuuuuuuuuu
等):

在上面的类中,我想在所有数值运算中使用属性
oper
。例如,我想实现以下行为:

>>> Example(1, 2) + Example(3, 4)
4
>>> 3 * Example(2, 10)
6
为了做到这一点,我是否需要实现我想要的每一个数值运算函数(
\uuuuu add\uuuuuu
\uuuuu mul\uuuuuu
等),或者是否有更简洁的方法来实现


下面是一些上下文,如果有帮助的话:这个类应该包含一些变量(即,一个随机变量,比如scipy.stats中的
rv
,以及一个包含一些百分位数的字典)。如果在数值运算中调用它(例如,代码>2 +示例(3, 10)< /代码>),它应该使用字典中的一个值作为操作中的操作数,期望返回<代码>浮点。

< P>可以考虑将其转换为所需类型

>>> class Example:
...     def __init__(self, param1, param2):
...         self.param1 = param1
...         self.param2 = param2
...     def __int__(self):
...         return self.param1

>>> 3 * int(Example(2,1))
6

3*示例(2,10)
中,您的输出是6,那么10的用途是什么?您的问题是如何继承float?或者你是否应该继承float?一个有答案,另一个有意见。你是说默认操作数吗?你是否尝试过实现
\uuuu add\uu
方法。它有效吗?运算符重载通常归结为在python中弄乱了神奇的方法,这是pythonic的,即使最常见的情况是大家都熟悉的
\uuuu init\uuuu
神奇的方法。不通俗的做法是自己调用这些神奇的方法(而
\uuuuu init\uuuu
是一个例外)。因此,如果你真的不确定你的代码是否是pythonic的,请在你的问题中包括它,因为我们无法尝试重新解决你来这里之前已经解决的问题。你可以通过许多试探性的问题看出细节是粗略的。或者在这种情况下是
\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu
。我没有想到,谢谢!不过,在这种情况下,每次执行操作时,我都必须将cast
Example
键入数字类型。
>>> class Example:
...     def __init__(self, param1, param2):
...         self.param1 = param1
...         self.param2 = param2
...     def __int__(self):
...         return self.param1

>>> 3 * int(Example(2,1))
6