我可以为 Python 中的内置 类 重载运算符吗?
Can I overload operators for builtin classes in Python?
是否可以为 Python 3 中的内置 class 重载运算符?具体来说,我想重载 +
/+=
(即:str
class 的 __add__
运算符,以便我可以执行诸如"This is a " + class(bla)
.
您无法更改 str
的 __add__
,但您 可以 定义如何将 class 添加到字符串。不过我不推荐它。
class MyClass(object):
...
def __add__(self, other):
if isinstance(other, str):
return str(self) + other
...
def __radd__(self, other):
if isinstance(other, str):
return other + str(self)
...
在"asdf" + thing
中,如果"asdf".__add__
不知道如何处理加法,Python尝试thing.__radd__("asdf")
。
是否可以为 Python 3 中的内置 class 重载运算符?具体来说,我想重载 +
/+=
(即:str
class 的 __add__
运算符,以便我可以执行诸如"This is a " + class(bla)
.
您无法更改 str
的 __add__
,但您 可以 定义如何将 class 添加到字符串。不过我不推荐它。
class MyClass(object):
...
def __add__(self, other):
if isinstance(other, str):
return str(self) + other
...
def __radd__(self, other):
if isinstance(other, str):
return other + str(self)
...
在"asdf" + thing
中,如果"asdf".__add__
不知道如何处理加法,Python尝试thing.__radd__("asdf")
。