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