gpt4 book ai didi

python : Operator Overloading a specific type

转载 作者:太空狗 更新时间:2023-10-30 00:22:35 30 4
gpt4 key购买 nike

我希望能够让我的类的运算符以我定义的方式与常规类型交互。比方说,我有:

class Mynum(object):
def __init__(self, x):
self.x = x
def __add__(self, other):
return self.x + other.x

a = Mynum(1)
b = Mynum(2)

print a+b

这工作得很好,但现在如果我尝试这样做:

print a+2

我得到一个错误,因为 int 没有名为 x 的成员。如何在类中定义 Mynum + int?这听起来像是装饰器或元类的工作,但我对它们的用法非常不熟悉。 This question看起来很相似,但并不完全相同。

最佳答案

def __add__(self, other):
if isinstance(other, self.__class__):
return self.x + other.x
elif isinstance(other, int):
return self.x + other
else:
raise TypeError("unsupported operand type(s) for +: '{}' and '{}'").format(self.__class__, type(other))

关于 python : Operator Overloading a specific type,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3188666/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com