python class属性

代码一:


class
A(object): pass a = A() a.name = "class_A" print(a.name) #class_A

 

代码二:
class
A(object): __slots__ = {} pass a = A() a.name = "class_A" print(a.name) #AttributeError: 'A' object has no attribute 'name'

  代码二会有异常;拥有 __slots__ 属性的类在实例化对象时不会自动分配 __dict__ ,而 obj.attr 即 obj.__dict__['attr'], 所以会引起 AttributeError

对于拥有 __slots__ 属性的类的实例 Obj 来说,只能对 Obj 设置 __slots__ 中有的属性。

  代码二改为:__slots__ = {'name'}则正常运行

posted @ 2018-06-25 21:35  YYRise  阅读(194)  评论(0编辑  收藏  举报