python3 - 使用__slots__限制实例属性


为了限制实例的属性,可以在定义class的时候,定义一个特殊的__slots__变量,来限制class实例能添加的属性。
比如,只允许对Persion实例添加name 和 age 属性

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

P = Person()
P.name = "老王"
P.age = 20
P.score = 100 # AttributeError: 'Person' object has no attribute 'score'


class Test(Person):
pass

t = Test()
t.score = 100
注意 :__slots__定义的属性仅对当前类实例起作用,对继承的子类是不起作用的
posted @ 2017-08-22 09:42  猪快跑  阅读(178)  评论(0编辑  收藏  举报