因为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__这个属性只对当前的类有用,对于继承这个类的子类并不适用。
网友评论