Discuss / Python / 关于__slots__和__getattr__两种方法间的冲突

关于__slots__和__getattr__两种方法间的冲突

Topic source

尽管在slots中限定了类模板的属性,但是实例依旧可以通过getattr获得限定外属性。

class A(object):

    __slots__=('a','b') 

    def __getattr__(s,attr):

      return 2

a=A()

print(a.c) # 打印出2

三秒世界

#2 Created at ... [Delete] [Delete and Lock User]

返回的 2 不属于限定外的属性吧,它也不属于属性 'c' 啊,2 只是替代了AttributeError


  • 1

Reply