Python dict子类实例的行为与dict实例不同

时间:2017-12-04 04:32:55

标签: python dictionary subclass

我最近在Python中注意到,如果我创建一个dict子类,我可以添加属性,但是这不是dict实例的情况。即:

class aDict(dict):
    pass

myDict = aDict({"name" : "A"})

myDict.color = "red"

print(myDict.color) #"red"

myOtherDict = dict({"name" : "B"})
myOtherDict.color = "green" #"AttributeError: 'dict' object has no attribute color"

1 个答案:

答案 0 :(得分:0)

您正在与myDict进行互动 __dict__这是给对象的属性字典,这与内置字典的myOtherDict不同。您可以通过尝试来了解与这些交互方式的不同之处:

dir(myDict)
dir(myOtherDict)

您可以通过myDict的 dict 属性查看可以访问的内容(并将其与myOtherDict上缺少属性的比较通过vars()进行比较

vars(myDict)
vars(myOtherDict)

还有一些可用的信息herehere帮助我了解您的问题。