Python高級編程-----元類(2)
何時使用元類:
說明性類說明
對於Django來說,有一個非常簡單直接的模型聲明方式,一個模型代表一個表,模型中屬性對應表的列。
本質上, 所完成工作:類的聲明、重組類屬性結構、然後使用新結構創建類。
用於類的驗證:
如果一個類必須遵循特定接口, 元類將是使其符合規範的有效方式。
http://blog.csdn.net/jinxiaonian11/article/details/53727339
(多重繼承super()函數,寫的很好,值得一看)
非繼承屬性
使類中特定的屬性不會自動繼承
顯而易見的方式:允許類設置abstract屬性,並且僅僅在abstract未設置或者設置爲false時才執行元類
的功能。
會有一個問題出現:子類將繼承abstract屬性
解決辦法:
通過attrs字典彈出abstract值來實現
顯示選擇的問題:
顯式比隱式更好 適用大多數場合
meta-Coding(元代碼)
callable: 方法用來檢測對象是否可被調用,可被調用指的是對象能否使用()括號的方法調用
http://www.cnblogs.com/kellyseeme/p/5525041.html
(裝飾器的閉包,值得一看)
說明性類說明
對於Django來說,有一個非常簡單直接的模型聲明方式,一個模型代表一個表,模型中屬性對應表的列。
本質上, 所完成工作:類的聲明、重組類屬性結構、然後使用新結構創建類。
用於類的驗證:
如果一個類必須遵循特定接口, 元類將是使其符合規範的有效方式。
http://blog.csdn.net/jinxiaonian11/article/details/53727339
(多重繼承super()函數,寫的很好,值得一看)
非繼承屬性
使類中特定的屬性不會自動繼承
顯而易見的方式:允許類設置abstract屬性,並且僅僅在abstract未設置或者設置爲false時才執行元類
的功能。
會有一個問題出現:子類將繼承abstract屬性
解決辦法:
通過attrs字典彈出abstract值來實現
顯示選擇的問題:
顯式比隱式更好 適用大多數場合
meta-Coding(元代碼)
callable: 方法用來檢測對象是否可被調用,可被調用指的是對象能否使用()括號的方法調用
http://www.cnblogs.com/kellyseeme/p/5525041.html
(裝飾器的閉包,值得一看)
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.