在這篇文章之中我們來了解一下關於python__slots__的相關知識,有些朋友可能是剛接觸到python這一程式語言,對這一方面不是特別的了解,在接下來這篇文章將會來帶大家來了解python__slots__的相關知識。
如果我們想要限制實例的屬性呢?例如,只允許對Student實例添加name和age屬性。
為了達到限制的目的,Python允許在定義class的時候,定義一個特殊的__slots__變量,來限制該class實例能添加的屬性:
class Student(object): __slots__ = ('name', 'age') # 用tuple定义允许绑定的属性名称
然後,我們試試:
>>> s = Student() # 创建新的实例 >>> s.name = 'Michael' # 绑定属性'name' >>> s.age = 25 # 绑定属性'age' >>> s.score = 99 # 绑定属性'score' Traceback (most recent call last): File "<stdin>", line 1, in <module> AttributeError: 'Student' object has no attribute 'score'
由於'score'沒有被放到__slots__中,所以不能綁定score屬性,試圖綁定score將得到AttributeError的錯誤。
使用__slots__要注意,__slots__定義的屬性僅對當前類別實例起作用,對繼承的子類別是不起作用的:
>>> class GraduateStudent(Student): ... pass ... >>> g = GraduateStudent() >>> g.score = 9999
除非在子類別中也定義__slots__,這樣,子類別實例允許定義的屬性就是自身的__slots__加上父類別的__slots__。
以上就是本篇文章所講述的所有內容,這篇文章主要介紹了python__slots__的相關知識,希望你能藉助資料從而理解上述所說的內容。希望我在這片文章所講述的內容能夠對你有幫助,讓你學習python更加輕鬆。
更多相關知識,請造訪php中文網Python教學欄位。
以上是python裡的__slots__能做什麼? (實例解析)的詳細內容。更多資訊請關注PHP中文網其他相關文章!