slots
class student(object):
slots= (『name』,『age』) #限制student類例項的屬性,最多只能是name和age
s=student() #例項化s
s.name=『micle』 #為s例項新增name屬性,並賦值
s.age=15
print(s.age, s.name) #列印s例項的age和name屬性值
class stu_2(student): #stu2繼承student類
pass #pass必須加,類定義內容無,必須加pass
a=stu_2()
a.score=90 #給a例項新增score屬性並賦值,繼承類並不會繼承__slot__限制
print(a.score) #列印a的score屬性值
@property #自帶的定義好的裝飾器,可以把類中的方法轉變為屬性,@property下的方法中變數只能是self乙個,其修飾下的方法的呼叫方式也變成了屬性的呼叫方式,其他方法的呼叫方式是函式的呼叫方式
乙個錯誤的示範:
這是正確的示範
#除了self變數,也可以是其他變數,但只能是乙個
關於@property的補充:如何在所謂的定義唯讀屬性下改變該唯讀屬性值
下面是唯讀模式有效的例項:
多重繼承:mixin表示新增的功能,但實際上任然是用類的方式定義的
Python基礎 使用 slots
定義乙個特殊的slots變數,來限制該class例項能新增的屬性 示例 usr bin env python3 coding utf 8 slots class student1 object pass defruntest1 s student1 s.name 蠟筆小新 s.age 6 s.sco...
python基礎 使用 slots
正常情況下,當我們定義了乙個class,建立了乙個class的例項後,我們可以給該例項繫結任何屬性和方法,這就是動態語言的靈活性。先定義class class student object pass 然後,嘗試給例項繫結乙個屬性 s student s.name michael 動態給例項繫結乙個屬...
Python 物件導向 slots
預設情況下,python 用乙個字典來儲存乙個物件的例項屬性。這使得我們可以在執行的時候動態的給類的例項新增新的屬性 test test test.new key new value 然而這個字典浪費了多餘的空間 很多時候我們不會建立那麼多的屬性。因此通過slots可以告訴 python 不要使用字...