1. 程式人生 > >Python提高筆記整理(二)

Python提高筆記整理(二)

href 參數 類屬性 所有 建議 例如 類繼承 指定 super

1.多繼承以及MRO順序
多繼承指的是子類繼承多個父類,可以通過三種方式訪問父類的方法:
父類名.父類方法(self):這種方式容易造成父類方法被調用多次的問題,而且一旦父類名稱發生變化,子類調用的地方都需要修改。
super(指定某個類名, self).父類方法():從指定類名的MRO下一級開始調用
super().父類方法():按照MRO順序查找上級父類的方法。
「方法解析順序」(Method Resolution Order簡稱MRO)可以通過類名.__MRO__屬性查找出來當前類的調用順序,其順序由C3算法來決定,保證每一個類只調用一次。
單繼承用哪種方式調用父類方法都可以,基本上無差別,但是建議super()的方式。
super()單繼承只需要傳父類參數,但是多繼承必須傳全部參數,可以使用多值參數。
2.類屬性和實例屬性的區別
在Python中一切皆對象,類是一個特殊的對象即類對象,描述類的屬性稱為類屬性,它屬於類。類屬性在內存中只有一份,所有實例對象公用。在__init__外部定義。
實例屬性用來描述類創建出來的實例對象,需要通過對象來訪問,在各自對象的內存中都保存一份。在__init__方法內部定義
3.實例方法、類方法、靜態方法的區別
這三種方法都是保存在類的內存中,調用者不同。
實例方法由對象調用,至少一個self參數,self代表對象的引用。
類方法由類調用,至少一個cls參數,並且需要裝飾器@classmethod修飾
br/>可以通過類名.__MRO__屬性查找出來當前類的調用順序,其順序由C3算法來決定,保證每一個類只調用一次。
單繼承用哪種方式調用父類方法都可以,基本上無差別,但是建議super()的方式。
super()單繼承只需要傳父類參數,但是多繼承必須傳全部參數,可以使用多值參數。
2.類屬性和實例屬性的區別
在Python中一切皆對象,類是一個特殊的對象即類對象,描述類的屬性稱為類屬性,它屬於類。類屬性在內存中只有一份,所有實例對象公用。在__init__外部定義。
實例屬性用來描述類創建出來的實例對象,需要通過對象來訪問,在各自對象的內存中都保存一份。在__init__方法內部定義
3.實例方法、類方法、靜態方法的區別
這三種方法都是保存在類的內存中,調用者不同。
實例方法由對象調用,至少一個self參數,self代表對象的引用。
類方法由類調用,至少一個cls參數,並且需要裝飾器@classmethod修飾
4.property屬性4.1定義
一種用起來像是使用的實例屬性一樣的特殊屬性,可以對應於某個方法,通過使用property屬性,能夠簡化調用者在獲取數據的流程。
property屬性的定義和調用要註意以下幾點:
定義時,在實例方法的基礎上添加 @property 裝飾器;並且僅有一個self參數
調用時,無需括號,加上就錯了。
4.2實現property屬性的兩種方式4.2.1裝飾器
經典類中的屬性只有一種訪問方式,其對應被 @property 修飾的方法,即只能讀取。新式類中的屬性有三種訪問方式,並分別對應了三個被@property、@方法名.setter、@方法名.deleter修飾的方法,分別對應讀取、修改和刪除屬性的方法。
br/>新式類中的屬性有三種訪問方式,並分別對應了三個被@property、@方法名.setter、@方法名.deleter修飾的方法,分別對應讀取、修改和刪除屬性的方法。
當使用類屬性的方式創建property屬性時,經典類和新式類無區別
property()方法有四個參數
第一個參數是方法名,調用 對象.屬性 時自動觸發執行方法
第二個參數是方法名,調用 對象.屬性 = XXX 時自動觸發執行方法
第三個參數是方法名,調用 del 對象.屬性 時自動觸發執行方法
第四個參數是字符串,調用 對象.屬性.doc ,此參數是該屬性的描述信息
5.常見的魔方屬性、方法
doc 表示類的描述信息
_module 表示當前操作的對象在那個模塊
class 表示當前操作的對象的類是什麽
new 創建對象時為對象分配空間,在初始化方法init之前被調用
init 初始化方法,通過類創建對象時,自動觸發執行
del 當對象在內存中被釋放時,自動觸發執行
call 對象後面加括號,觸發執行,例如對象()或者類名()()
dict 類或對象中的所有屬性
str 在打印對象時,默認輸出該方法的返回值(字符串)
6.with與“上下文管理器”
任何實現了
enter() 和 exit__() 方法的對象都可稱之為上下文管理器,上下文管理器對象可以使用 with 關鍵字。Python 提供了 with 語法用於簡化資源操作的後續清除操作,是 try/finally 的替代方法,實現原理建立在上下文管理器之上。
使用的with open(文件名) as f:這種語法可以在文件調用結束或者文件操作異常的時候自動關閉文件

Python提高筆記整理(二)