class Person(object):
# 限定Person对象只能绑定_name, _age和_gender属性
__slots__ = ('_name', '_age', '_gender')
def __init__(self, name, age):
self._name = name
self._age = age
@property
def name(self):
return self._name
@property
def age(self):
return self._age
@age.setter
def age(self, age):
self._age = age
def play(self):
if self._age <= 16:
print('%s正在玩飞行棋.' % self._name)
else:
print('%s正在玩斗地主.' % self._name)
def main():
person = Person('王大锤', 22)
person.play()
person._gender = '男'
# AttributeError: 'Person' object has no attribute '_is_gay'
# person._is_gay = True
#转:Author: 骆昊
Python中__slots__限定对象属性
博客介绍了动态语言可在运行时给对象绑定或解绑定属性和方法。若要限定自定义类型对象只能绑定某些属性,可在类中定义__slots__变量,不过__slots__的限定仅对当前类对象生效,对子类无效。
3万+

被折叠的 条评论
为什么被折叠?



