pydata

Keep Looking, Don't Settle

python class (4): 只允许添加给定的属性 __slots__

怎么才能限制class的属性,只允许添加被许可的属性 (slots)?

class Person(object):
 pass

p = Person()

此时可以添加许多属性

p.name = 'Mike'
p.age = 20
p.grades = 90

如果要限制只允许添加给定的属性,那么使用__slots__

class Person(object):
 def __init__(self):
  pass

 __slots__ = ('name', 'age')  #只允许添加name和age两个属性,用tuple来定义

p = Person()
p.grades = 90  #报错,因为grades不在许可的属性之列