我正在学习 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 += dict2
passed through zDict.__add__
>>> dict1
>>> type(dict1)
>>> <class 'NoneType'>
所以我不明白那里。我输入了同样的东西,但得到了不同的结果。dict1 = dict1 + dict2和打字一样,打字dict1 += dict2也一样dict1 = dict1.__add__(dict2),对吧?而且我确保它们通过相同的方法打印。它不能来自dict class,因为它没有任何__add__方法。也许它通过来自父类(如对象)的方法,谁将类型更改为NoneType?我该如何检查并防止它?
慕运维8079593
梦里花落0921
相关分类