我遇到了一个我无法解释的问题:
class A:
def __init__(self, rid, title):
self.rid = rid
self.title = title
self.b = []
def __add__(self, other):
if type(other) == B:
self.b += [other]
def __str__(self):
return self.rid + ' - ' + self.title
def __repr__(self):
return str(self)
class B:
def __init__(self, rid, title):
self.rid = rid
self.title = title
b = B('123', 'abc')
a = A('345', 'cde')
print(a)
a += b
print(a)
第一次打印产生预期的输出:
345 - cde
然而,第二次打印(在添加b之后)导致:
None
为什么?我没有更改a
的删除或标题,也没有创建名为a
的新的未初始化实例,或者我是?
答案 0 :(得分:2)
表达式a += b
是:a = a.__add__(b)
当您的__add__()
方法返回None
时,这意味着您会将None
分配给a
。