我是一名 Python 学习者,目前正在破解一个具有可变数量字段的类,如此处的“命名材料束”示例中所示。
class Bunch:
def __init__(self, **kwds):
self.__dict__.update(kwds)
我还想__setattr__
在此类中编写一个以检查输入属性名称。但是,python 文档说,
如果 __setattr__() 想要分配给实例属性,它不应该简单地执行“self.name = value”——这会导致对自身的递归调用。相反,它应该在实例属性的字典中插入值,例如,“self.__dict__[name] = value”。对于新式类,它应该调用具有相同名称的基类方法,而不是访问实例字典,例如“object.__setattr__(self, name, value)”。
在那种情况下,我是否也应该object.__dict__
在__init__
函数中使用 replace self.__dict__
?