色综合图-色综合图片-色综合图片二区150p-色综合图区-玖玖国产精品视频-玖玖香蕉视频

您的位置:首頁技術(shù)文章
文章詳情頁

淺談python 類方法/靜態(tài)方法

瀏覽:2日期:2022-07-10 18:25:46

1.類方法

類方法是從屬于'類對象'的方法。類對象可以通過裝飾器@classmethod來定義,具體格式如下:

@classmethoddef 類方法名(cls [, 形參列表]):方法體

要點如下:

@classmethod必須位于方法的上面一行 第一個參數(shù)cls(class的縮寫,和前面筆記介紹的self類似),必須要有,代指'類對象'本身。 調(diào)用類方法格式:類名.類方法名(參數(shù)列表)。參數(shù)列表中不需要也不能給cls參數(shù)進行傳值,解釋器會自動賦值。 類方法中可以訪問實例屬性和實例方法會導(dǎo)致錯誤,因為有類不一定有對象。 子類繼承父類方法時,傳入cls是自身對象,而非父類對象。(后面的筆記會有介紹)

代碼示例:

class Student: count = 0 # 類屬性 '''定義方法''' @classmethod def print_count(cls): '''cls參數(shù)代表類對象''' print(Student.count)'''調(diào)用類方法'''print('調(diào)用時,不傳遞cls參數(shù)')Student.print_count()

運行結(jié)果:

調(diào)用時,不傳遞cls參數(shù)0

2.靜態(tài)方法

在python中,允許定義于”類對象“無關(guān)的方法,稱為'靜態(tài)方法'。'靜態(tài)方法'和在模塊中定義的普通方法沒有什么區(qū)別,只不過'靜態(tài)方法'放到了'類的名字變量空間',需要通過類調(diào)用。靜態(tài)方法通過裝飾器@staticmethod來定義,格式如下:

@staticmethoddef 靜態(tài)方法名([形參列表]):方法體

要點如下:

@staticmethod必須位于方法上面一行 調(diào)用靜態(tài)方法格式:類名.靜態(tài)方法名(參數(shù)列表) 靜態(tài)方法中訪問實例屬性和實例方法會導(dǎo)致錯誤

代碼示例:

class Student: count = 0 # 類屬性 @staticmethod def add(a, b): '''與類無關(guān)的靜態(tài)方法''' '''因為靜態(tài)方法從屬于類,所以是可以操作類屬性和類方法''' print('{0}+{1}={2}'.format(a, b, a+b)) return a + b# 調(diào)用靜態(tài)方法Student.add(20, 30)

運行結(jié)果:

20+30=50res=50

3.實例方法/類方法/靜態(tài)方法的區(qū)別

class MyClass: # 類屬性 class_attr = 0 def __init__(self, obj_attr): self.obj_attr = obj_attr def instance_method(self): return 'instance method called', self @classmethod def class_method(cls): return 'class method called', cls @staticmethod def static_method(): return 'static method called'print('調(diào)用實例方法')obj1 = MyClass('obj_attr1')print(obj1.instance_method())print('--' * 20)print('調(diào)用類方法')print(MyClass.class_method())print('--' * 20)print('調(diào)用靜態(tài)方法')print(MyClass.static_method())

運行結(jié)果:

調(diào)用實例方法(’instance method called’, <__main__.MyClass object at 0x10ca93310>)----------------------------------------調(diào)用類方法(’class method called’, <class ’__main__.MyClass’>)----------------------------------------調(diào)用靜態(tài)方法static method called

注意: 以下討論的屬性、方法均指公開的類型,非私有的。

實例方法:

能讀取、修改實例屬性 能調(diào)用實例方法 能讀取、修改類屬性 能調(diào)用類方法 能調(diào)用類靜態(tài)方法 調(diào)用方式:對象名.實例方法名(參數(shù)列表),編譯器自動傳遞self參數(shù)

類方法:

不能讀取、修改實例屬性 不能用實例方法 能讀取、修改類屬性 能調(diào)用類方法 能調(diào)用類靜態(tài)方法 調(diào)用方式:類名.類方法名(參數(shù)列表),編譯器自動傳遞cls參數(shù)

靜態(tài)方法:

不能讀取、修改實例屬性 不能用實例方法 能讀取、修改類屬性 能調(diào)用類方法 能調(diào)用類靜態(tài)方法 調(diào)用方式: 類名.靜態(tài)方法名(參數(shù)列表),不需要cls參數(shù) 類方法和靜態(tài)方法,功能非常相近,可以相互替代, 但是從規(guī)范的角度來說,請按照實例方法操作對象,類方法操作類,靜態(tài)方法為和類無關(guān)的通用方法。

以上就是淺談python 類方法/靜態(tài)方法的詳細(xì)內(nèi)容,更多關(guān)于類方法/靜態(tài)方法的資料請關(guān)注好吧啦網(wǎng)其它相關(guān)文章!

標(biāo)簽: Python 編程
相關(guān)文章:
主站蜘蛛池模板: 欧美韩国日本 | 欧美三级在线观看不卡视频 | 免费又黄又爽视频 | 日韩中文字幕在线亚洲一区 | 一级片爱爱 | 青草欧美| 久久草在线视频 | 国产精品手机在线亚洲 | 国产亚洲精品精品国产亚洲综合 | 亚洲第一页在线 | 欧美一区二区三区精品影视 | 成人精品一区二区www | 久久99国产精品久久99果冻传媒 | 俺来也欧美亚洲a∨在线 | 正能量www正能量免费网站 | 国产系列 视频二区 | 131的美女午夜爱爱爽爽视频 | 国产在播放一区 | 毛片一级在线观看 | 国产午夜精品久久久久九九 | 日韩三级一区二区 | free性欧美嫩交 | 国产精品亚洲精品久久成人 | 国产精品视频久久久久 | 成人a免费α片在线视频网站 | 欧美视频久久 | 12345国产精品高清在线 | 欧美日韩国产在线观看一区二区三区 | 黄页网站18以下禁止观看 | 女女同性一区二区三区四区 | 国产精品亚洲二区在线 | 手机在线观看精品国产片 | 亚洲精品99久久一区二区三区 | 国内精品免费一区二区三区 | 高清毛片免费看 | 99在线精品免费视频 | 亚洲国产成人久久精品图片 | 亚洲三级理论 | 亚洲日韩中文字幕天堂不卡 | 国产精品女在线观看 | 欧美三级做爰视频 |