Pyhton 物件導向高階二 類的裝飾器基本原理

2021-10-13 07:16:55 字數 801 閱讀 3841

語法糖 @ 不僅可以用到函式上面,還能用到類的上面。因為一切皆物件,函式跟類都可以看做物件,所以能這麼用。

上圖,可以看到,obj 能拿到 foo 這個類的位址,那麼就能執行相對應的其他操作

先來提個需求:裝飾器能給函式增加功能,那麼這裡要給類增加新的屬性。

避免混亂,先搞清楚程式執行順序:

上圖中,語法糖有括號,代表執行。首先就是把引數傳進type裡面,接著就是執行輸出操作,返回了deco函式,這時相當於@deco,繼續執行deco函式裡面的操作:兩次輸出,然後返回foo類。

到這裡為止,功能實現的差不多了,就差為類增加屬性的增加這個操作

上圖中,可以看到,成功為類增加了資料屬性。

拿前面描述符的應用來舉例子

如果有很多的屬性,乙個個加會非常麻煩

最終效果如上圖。

物件導向高階 二

一.總結回顧 1.類 定義 靜態屬性,類屬性 變數 直接寫在類中,全大寫 動態屬性,方法 函式 self 類方法 classmethod cls 靜態方法 staticmethod 沒有預設引數 2.呼叫 物件名.動態屬性 類名.動態屬性 物件 類名.靜態屬性 物件名.靜態屬性 類名.類方法 物件名...

物件導向高階 二

一 item系列 getitem setitem 和 delitem 二 類的特殊變數 slots 三 迭代器協議 iter 和 next 四 module 和 class 五 類的描述資訊 doc 六 析構方法 del 七 enter 和 exit 八 call 九 元類 class foo de...

物件導向 高階

json方式的物件導向 json 把方法包在json裡 json物件導向 有人管他叫 命名空間 在公司裡 把同一類 的方法包在一起 拖拽和繼承 物件導向的拖拽 改寫原有的拖拽 繼承 asdf 拖拽 instanceof 檢視物件是某個類的例項 使用繼承 限制範圍的拖拽類 建構函式的偽裝 屬性的繼承 ...