Skip to content

Instantly share code, notes, and snippets.

@geekKeen
Created August 16, 2017 03:54
Show Gist options
  • Save geekKeen/e2ca597d138b862514b56ef89ee6169d to your computer and use it in GitHub Desktop.
Save geekKeen/e2ca597d138b862514b56ef89ee6169d to your computer and use it in GitHub Desktop.
操作属性字典
class A(object):
def __setattr__(self, attr, value):
self.__dict__(self, attr, value) # setattr(self, attr, value)
def __getattr__(self, attr):
return self.__dict__(self, attr) # getattr(self, attr)
@geekKeen
Copy link
Author

geekKeen commented Aug 16, 2017

当操作 __dict__ 时,应该使用 getattrsetattr

@geekKeen
Copy link
Author

geekKeen commented Oct 9, 2017

warning:
setattr(x, 'foo', 123) 等价于 x.foo = 123 会调用 setattr, 如果自定义实现了 setattr 将会造成死循环

内部可以使用 object.setattr

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment