在创建一个简单的类并实例化它之后,我发现了这种好奇心,
class A():
def __init__(self,inp):
self.id = inp
def get_id(self):
return self.id
def __add__(self,other):
return other + self.id
实例化,
me = A('Matt')
现在,当我尝试使用重载方法__add__
时,它按预期工作,
me + ' test concatenation'
但是当我以相反的方式进行时,'test concatenation ' + me
,我得到了
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: cannot concatenate 'str' and 'instance' objects
为什么参数的顺序很重要?
答案 0 :(得分:0)
因为'+'符号首先隐式调用.__ add __(second)。
在幕后,当你有一个像“hello”+“world”这样的表达式时,你实际上是在执行它:string .__ add __(string)。因此,__ add__方法是第一个参数的方法,这就是订单重要的原因。