Python 字典可以模拟对象属性吗?
将字典键作为对象属性访问提供了便利,但会引发有关潜在问题的问题。本文探讨了 AttrDict 的用法,这是一种旨在满足这一需求的自定义类。
自定义类方法
要模拟字典的对象属性,可以创建一个名为 AttrDict 的子类:
class AttrDict(dict): def __getattr__(self, attr): return self[attr] def __setattr__(self, attr, value): self[attr] = value
自定义的优点类
自定义的缺点类
工作原理
AttrDict 类将自身指定为对象的内部 __dict__ 属性。这将字典命名空间链接到对象的属性,允许通过两种语法进行访问。
Python 不提供此功能的理由
Python 避免了直接属性访问功能,以防止命名空间污染。分配字典项可能会覆盖方法属性,从而导致意外行为。例如:
d = AttrDict() d.update({'items': ['jacket', 'necktie', 'trousers']}) for k, v in d.items(): # TypeError: 'list' object is not callable
以上是Python字典可以像对象一样使用吗?的详细内容。更多信息请关注PHP中文网其他相关文章!