slots屬性限制

2021-10-21 06:45:07 字數 633 閱讀 4362

class admin:

#限制要新增的例項屬性

#節約記憶體資源

slots= (『name』,『pwd』)

defstr(self):

return 『{}…{}』.format(self.name,self.pwd)

pass

r=admin()

r.name=『root』

r.pwd=『pwd』

##在定義了slots變數之後student類的例項已經不能隨意建立不在 slots_ 定義的屬性了

##同時還可以看到例項當中也不在有__ dict__

#在繼承關係當中的使用slots.

#子類未宣告__slots__ 時,那麼是不會繼承父類的__ slots__ 此時子類是可以隨意的屬性賦值的

#子類宣告了slots時,繼承父類的slots

#也就是子類_slots_的範圍 是為其自身+父類的slots

class user(admin):

slots= (『age』)

pass

u=user()

u.age=22

print(u.age)

python 類的屬性 slots

當乙個類需要建立大量例項時,可以通過 slots 宣告例項所需要的屬性,1 更快的屬性訪問速度 2 減少記憶體消耗 3 限定乙個類建立的例項只能有固定的例項屬性 例項變數 不允許物件新增列表以外的例項屬性 4 防止使用者因錯寫屬性名稱而發生程式錯誤 1 每個繼承的子類都要重新定義一遍 slots 例...

python限定類屬性的類屬性 slots

slots 由於python是動態語言,任何例項在執行期都可以動態地新增屬性。如果要限制新增的屬性,例如,student類只允許新增 name gender和score 這3個屬性,就可以利用python的乙個特殊的 slots 來實現。顧名思義,slots 是指乙個類允許的屬性列表 class s...

只允許對某個例項新增某個屬性 slots

如果我們想要限制例項的屬性怎麼辦?比如,只允許對student例項新增name和age屬性。為了達到限制的目的,python允許在定義class的時候,定義乙個特殊的 slots 變數,來限制該class例項能新增的屬性 class student object slots name age 用tu...