Python 中__slots__属性

2019-01-07  本文已影响9人  爆炸的白菜君

因为Python是动态语言。属性和方法可以随便添加和删除。这是所有动态语言的优点也是缺点。
静态语言:编译的时候确定的代码在运行过程中不可修改
动态语言:可以在运行过程中修改代码

python就是动态语言。动态语言有不是特别严谨
__slots__就是用来决绝这个问题的。
为了达到限制的目的, Python允许在定义 class的时候,定义一个特殊的__slots__变量,来限制该 class实例能添加的属性:

class Person(object):
    __slots__ = ('name', 'age')

p = Person()

p.name = 'yhl'
print p.name

p.age = 17

print p.age
#会报错,因为\_\_slots\_\_已经规定了这个类所有可添加的属性
p.gender = 1

__slots__这个属性只对当前的类有用,对于继承这个类的子类并不适用。

上一篇下一篇

猜你喜欢

热点阅读