您好,登錄后才能下訂單哦!
本文實例講述了Python 靜態方法和類方法。分享給大家供大家參考,具體如下:
1. 類屬性、實例屬性
它們在定義和使用中有所區別,而最本質的區別是內存中保存的位置不同,
實例屬性屬于對象
類屬性屬于類
class Province(object): # 類屬性 country = '中國' def __init__(self, name): # 實例屬性 self.name = name # 創建一個實例對象 obj = Province('山東省') # 直接訪問實例屬性 print(obj.name) # 直接訪問類屬性 Province.country
由上述代碼可以看出【實例屬性需要通過對象來訪問】【類屬性通過類訪問】,在使用上可以看出實例屬性和類屬性的歸屬是不同的。
其在內容的存儲方式類似如下圖:
由上圖看出:
類屬性在內存中只保存一份
實例屬性在每個對象中都要保存一份
應用場景:
通過類創建實例對象時,如果每個對象需要具有相同名字的屬性,那么就使用類屬性,用一份既可
2. 實例方法、靜態方法和類方法
方法包括:實例方法、靜態方法和類方法,三種方法在內存中都歸屬于類,區別在于調用方式不同。
實例方法:由對象調用;至少一個self參數;執行實例方法時,自動將調用該方法的對象賦值給self;
類方法:由類調用; 至少一個cls參數;執行類方法時,自動將調用該方法的類賦值給cls;
靜態方法:由類調用;無默認參數;
class Foo(object): def __init__(self, name): self.name = name def ord_func(self): """ 定義實例方法,至少有一個self參數 """ # print(self.name) print('實例方法') @classmethod def class_func(cls): """ 定義類方法,至少有一個cls參數 """ print('類方法') @staticmethod def static_func(): """ 定義靜態方法 ,無默認參數""" print('靜態方法') f = Foo("中國") # 調用實例方法 f.ord_func() # 調用類方法 Foo.class_func() # 調用靜態方法 Foo.static_func()
對比
相同點:對于所有的方法而言,均屬于類,所以 在內存中也只保存一份
不同點:方法調用者不同、調用方法時自動傳入的參數不同。
更多關于Python相關內容感興趣的讀者可查看本站專題:《Python面向對象程序設計入門與進階教程》、《Python數據結構與算法教程》、《Python函數使用技巧總結》、《Python字符串操作技巧匯總》、《Python編碼操作技巧總結》及《Python入門與進階經典教程》
希望本文所述對大家Python程序設計有所幫助。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。