【发布时间】:2019-12-17 13:50:18
【问题描述】:
在 Python 中,我可以为我的类的实例定义“加号”运算符的行为:
class A:
def __add__(self, x):
return f"adding {x}"
A() + 3 # returns "adding 3"
但是如何为我的类本身定义一个运算符?通常我会使用 @classmethod 或 @staticmethod 装饰器:
class A:
@classmethod
def __add__(cls, x):
return f"adding {x} to {cls}"
print(A + 1)
但它不起作用:
Traceback (most recent call last):
File "class_operator.py", line 6, in <module>
print(A + 1)
TypeError: unsupported operand type(s) for +: 'type' and 'int'
我怎样才能使该代码工作?
【问题讨论】:
标签: python operator-overloading metaprogramming