美文网首页
python __slots__ 限制属性

python __slots__ 限制属性

作者: wangtieshan | 来源:发表于2017-08-29 16:25 被阅读0次
Python 是动态语言,允许我们动态的增加属性和方法

class Student(object):
    pass
    
s = Student()

s.name = "LiLei"

print(s.name)

>>> LiLei
同样也有办法限制属性的动态绑定

class Teacher(object):
    # 用tuple定义允许绑定的属性名称,但是此限制对子类不起作用
    __slots__ = ('name', 'age') 


如上所示可以规定 class Teacher 只可以绑定 nameage 两个属性
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

相关文章

网友评论

      本文标题:python __slots__ 限制属性

      本文链接:https://www.haomeiwen.com/subject/mmaodxtx.html