我想在Python类中定义一个属性,用于所有数值运算(__add__
,__mul__
等):
class Example:
def __init__(self, param1, param2):
self.oper = param1
因此,在上面的课程中,我想在所有数值运算中使用属性oper
。例如,我想实现以下行为:
>>> Example(1, 2) + Example(3, 4)
4
>>> 3 * Example(2, 10)
6
为了做到这一点,我是否需要实现我想要的每个数值运算函数(__add__
,__mul__
等),或者是否有更简洁/ Pythonic的做法是什么?
这是一些上下文,如果它有帮助:这个类应该包含一些变量(即一个随机变量,如scipy.stats中的rv
和一个包含一些百分位数的字典)。如果在数值运算中调用它(例如,2 + Example(3, 10)
),则应该使用字典中的一个值作为操作中的操作数,预期返回float
。
答案 0 :(得分:3)
您可以考虑将其投射到所需的类型
>>> 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