我正在学习 Python 课程,练习是创建一个类,您可以在其中通过键入将字典附加到另一个类: dict1 = dict1 + dict2所以这是通过__add__在类中创建一个方法来完成的,因为dict1 + dict2和打字一样dict1.__add__(dict2),对吧?除了如果我输入这 2 个命令,它们不会返回相同的值。这是我的代码的摘录:class zDict(dict):... def __add__(self, otherDict): otherDict = [(k,v) for k,v in otherDict.items()] print("passed through zDict.__add__") #just to make sure for key, value in otherDict: self[key]=value...因此,如果我们用2个zDict对象运行它,dict1 = {'a':1,'b':2,'c':3}并dict2 = {'d':4,'e':5}为例子,这里的结果(Python的3.6.6):>>> dict1.__add__(dict2)passed through zDict.__add__>>> dict1>>> {'a':1,'b':2,'c':3,'d':4,'e':5}>>> type(dict1)>>> <class '__main__.zDict'>RESTART>>> dict1 += dict2passed through zDict.__add__>>> dict1>>> type(dict1)>>> <class 'NoneType'>所以我不明白那里。我输入了同样的东西,但得到了不同的结果。dict1 = dict1 + dict2和打字一样,打字dict1 += dict2也一样dict1 = dict1.__add__(dict2),对吧?而且我确保它们通过相同的方法打印。它不能来自dict class,因为它没有任何__add__方法。也许它通过来自父类(如对象)的方法,谁将类型更改为NoneType?我该如何检查并防止它?
2 回答

慕运维8079593
TA贡献1876条经验 获得超5个赞
zDict.__add__()
将返回None
(即您将自己更改到位) dict1 += dict2
与dict1 = dict1.__add__(dict2)
还有为什么不使用dict.update()
?
添加回答
举报
0/150
提交
取消