我运行了下面的代码;
class A:
def __init__(self):
self.f = 1
def __add__(self, x):
self.f += x
return self
def __radd__(self, x):
self.f += x
return self
>>> a = A()
>>> a + 2
<__main__.A object at 0x7f96a90d5700>
>>> a.f == 3
True
# as expected, so far
>>> a = A()
>>> b = A()
>>> a + b
<__main__.A object at 0x7f3d86d7c700>
>>> a.f
<__main__.A object at 0x7f3d86d7cb80>
>>> b.f
2
>>> a.f.f
2
>>> a.f is b
True
刚才发生了什么?为什么是a.f == b和b.f == 2。
我想知道这是否是某种明确的行为,我没有正确解释。
犯罪嫌疑人X
相关分类