python __slots__ 限制屬性

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
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章