python __slots__ 限制属性

2017-08-29  本文已影响0人  wangtieshan
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

上一篇 下一篇

猜你喜欢

热点阅读