Python 是動態語言,允許我們動態的增加屬性和方法
class Student(object):
pass
s = Student()
s.name = "LiLei"
print(s.name)
>>> LiLei
同樣也有辦法限制屬性的動態綁定
class Teacher(object):
# 用tuple定義允許綁定的屬性名稱,但是此限制對子類不起作用
__slots__ = ('name', 'age')
如上所示可以規定 class Teacher 只可以綁定 name 和 age 兩個屬性
t = Teacher()
# 此處不能再添加屬性
t.height = 1
>>> AttributeError: 'Teacher' object has no attribute 'height'
但是 slots 對子類是不起作用的
class MiddleTeacher(object):
pass
s = MiddleTeacher()
s.height = 1
print(s.height)
>>> 1