通過實例了解python__slots__使用方法
一、背景
python是一個動態(tài)語言,可以支持我們在運行時動態(tài)的給類、對象添加屬性或者方法;但是如果我們想要限制可以添加的屬性或方法該怎么辦呢?
二、__slots__
python允許在定義class的時候,定義一個特殊的__slots__變量,來限制該class能添加的屬性:
>>> class Student(object):... __slots__ = (’name’, ’age’) # 用tuple定義允許綁定的屬性名稱...
然后嘗試添加屬性:
>>> s = Student() # 創(chuàng)建新的實例>>> 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__定義的屬性僅對當(dāng)前類起作用,對繼承的子類是不起作用的:
>>> class GraduateStudent(Student):... pass...>>> g = GraduateStudent()>>> g.score = 9999
除非在子類中也定義__slots__,這樣,子類允許定義的屬性就是自身的__slots__加上父類的__slots__。
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持好吧啦網(wǎng)。
相關(guān)文章:
1. 測試模式 - XSL教程 - 52. python b站視頻下載的五種版本3. vue實現(xiàn)簡易圖片左右旋轉(zhuǎn),上一張,下一張組件案例4. 每日六道java新手入門面試題,通往自由的道路第二天5. Python結(jié)合百度語音識別實現(xiàn)實時翻譯軟件的實現(xiàn)6. 解決Java中的java.io.IOException: Broken pipe問題7. python如何寫個俄羅斯方塊8. 《CSS3實戰(zhàn)》筆記--漸變設(shè)計(一)9. 教你JS更簡單的獲取表單中數(shù)據(jù)(formdata)10. JAVA抽象類及接口使用方法解析
