中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Python 靜態方法和類方法實例分析

發布時間:2020-10-02 22:17:39 來源:腳本之家 閱讀:161 作者:小飛俠v科比 欄目:開發技術

本文實例講述了Python 靜態方法和類方法。分享給大家供大家參考,具體如下:

1. 類屬性、實例屬性

它們在定義和使用中有所區別,而最本質的區別是內存中保存的位置不同,

實例屬性屬于對象

類屬性屬于類

class Province(object):
  # 類屬性
  country = '中國'
  def __init__(self, name):
    # 實例屬性
    self.name = name
# 創建一個實例對象
obj = Province('山東省')
# 直接訪問實例屬性
print(obj.name)
# 直接訪問類屬性
Province.country

由上述代碼可以看出【實例屬性需要通過對象來訪問】【類屬性通過類訪問】,在使用上可以看出實例屬性和類屬性的歸屬是不同的。

其在內容的存儲方式類似如下圖:

Python 靜態方法和類方法實例分析

由上圖看出:

類屬性在內存中只保存一份

實例屬性在每個對象中都要保存一份

應用場景:

通過類創建實例對象時,如果每個對象需要具有相同名字的屬性,那么就使用類屬性,用一份既可

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入門與進階經典教程》

希望本文所述對大家Python程序設計有所幫助。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

合水县| 酒泉市| 牟定县| 朝阳县| 临沧市| 花垣县| 嘉荫县| 肇源县| 福海县| 文山县| 东乌珠穆沁旗| 乐业县| 大洼县| 鸡泽县| 临颍县| 汤原县| 金堂县| 文水县| 威远县| 尖扎县| 如皋市| 琼海市| 宕昌县| 中西区| 中阳县| 界首市| 南昌县| 沂源县| 齐河县| 社旗县| 蒙山县| 江永县| 沂南县| 安溪县| 全椒县| 泾川县| 尤溪县| 双城市| 台湾省| 琼结县| 安达市|