python getattr and setattr with self.__dict__
我一直在阅读关于重写getattr和setattr的内容,如果我使用self,就无法确定是否需要重写赋值。
有一次我举了个例子
1 | a = OPT(foo='bar') |
a.foo和一个[‘foo’]使用和不使用"getattr"和"setattr"声明。
如果我两者都需要,有人能解释一下吗?如果我这样做,为什么?谢谢!
1 2 3 4 5 6 7 | class OPT(dict): __getattr__ = dict.__getitem__ __setattr__ = dict.__setitem__ def __init__(self, *args, **kwargs): super(OPT, self).__init__(*args, **kwargs) self.__dict__ = self |
当你和你getattr重写setattr想给一些额外的类或集合when the user属性得到平安。for example:P></
1)你可能avoid manipulates安安当用户通过数据库属性返回INVALID,你只是不知道for an unknown属性。P></
2)属性是真的manipulations forwarded / delegated知道the valid属性,例如是not known that represents提前行级数据库和用户manipulates columns作为属性。的运行时间need to check if the given name column name属性matches,也许我喜欢和我的上/下的房屋,房屋等。P></
another thing is preferred to有时,子类的控制。inheriting instead of from a快译通,that contains类你可以在字典的创建。P></