【发布时间】:2011-09-12 10:26:12
【问题描述】:
我是一名 Python 学习者,目前正在编写一个具有可变数量字段的类,如 "Bunch of Named Stuff" example here。
class Bunch:
def __init__(self, **kwds):
self.__dict__.update(kwds)
我还想在这个类中写一个__setattr__,以便检查输入的属性名称。但是,python documentation 说,
如果 __setattr__() 想要分配给一个 实例属性,它不应该 只需执行“self.name = value”—— 这将导致递归调用 本身。相反,它应该插入 实例字典中的值 属性,例如,“self.__dict__[name] = 价值”。 对于新型类,而不是 访问实例字典,它 应该调用基类方法 同名,例如, “对象.__setattr__(自我,姓名, 值)”。
在这种情况下,我是否也应该在__init__ 函数中使用object.__dict__ 来替换self.__dict__?
【问题讨论】: