亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

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

 更新時(shí)間:2020年09月18日 09:46:24   作者:聶發(fā)俊  
這篇文章主要介紹了python 類方法/靜態(tài)方法的相關(guān)資料,幫助大家更好的理解和學(xué)習(xí)python,感興趣的朋友可以了解下

1.類方法

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

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

要點(diǎn)如下:

  1. @classmethod必須位于方法的上面一行
  2. 第一個(gè)參數(shù)cls(class的縮寫,和前面筆記介紹的self類似),必須要有,代指"類對(duì)象"本身。
  3. 調(diào)用類方法格式:類名.類方法名(參數(shù)列表)。參數(shù)列表中不需要也不能給cls參數(shù)進(jìn)行傳值,解釋器會(huì)自動(dòng)賦值。
  4. 類方法中可以訪問實(shí)例屬性和實(shí)例方法會(huì)導(dǎo)致錯(cuò)誤,因?yàn)橛蓄惒灰欢ㄓ袑?duì)象。
  5. 子類繼承父類方法時(shí),傳入cls是自身對(duì)象,而非父類對(duì)象。(后面的筆記會(huì)有介紹)

代碼示例:

class Student:
  count = 0    # 類屬性

  """定義方法"""
  @classmethod
  def print_count(cls):
    """cls參數(shù)代表類對(duì)象"""
    print(Student.count)


"""調(diào)用類方法"""
print("調(diào)用時(shí),不傳遞cls參數(shù)")
Student.print_count()

運(yùn)行結(jié)果:

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

2.靜態(tài)方法

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

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

要點(diǎn)如下:

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

代碼示例:

class Student:
  count = 0      # 類屬性

  @staticmethod
  def add(a, b):
    """與類無關(guān)的靜態(tài)方法"""
    """因?yàn)殪o態(tài)方法從屬于類,所以是可以操作類屬性和類方法"""
    print("{0}+{1}={2}".format(a, b, a+b))
    return a + b


# 調(diào)用靜態(tài)方法
Student.add(20, 30)

運(yùn)行結(jié)果:

20+30=50
res=50

3.實(shí)例方法/類方法/靜態(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)用實(shí)例方法")
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())

運(yùn)行結(jié)果:

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

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

實(shí)例方法:

  1. 能讀取、修改實(shí)例屬性
  2. 能調(diào)用實(shí)例方法
  3. 能讀取、修改類屬性
  4. 能調(diào)用類方法
  5. 能調(diào)用類靜態(tài)方法
  6. 調(diào)用方式:對(duì)象名.實(shí)例方法名(參數(shù)列表),編譯器自動(dòng)傳遞self參數(shù)

類方法:

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

靜態(tài)方法:

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

以上就是淺談python 類方法/靜態(tài)方法的詳細(xì)內(nèi)容,更多關(guān)于類方法/靜態(tài)方法的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • python3.6生成器yield用法實(shí)例分析

    python3.6生成器yield用法實(shí)例分析

    這篇文章主要介紹了python3.6生成器yield用法,結(jié)合實(shí)例形式分析了Python3.6中生成器yield的功能、用法及相關(guān)操作注意事項(xiàng),需要的朋友可以參考下
    2019-08-08
  • 用Python字符畫出了一個(gè)谷愛凌

    用Python字符畫出了一個(gè)谷愛凌

    之前經(jīng)常在網(wǎng)上看到那種由一個(gè)個(gè)字符構(gòu)成的視頻,非常炫酷。本文也將利用Python字符畫一個(gè)最近的冬奧冠軍谷愛凌,感興趣的小伙伴可以學(xué)習(xí)一下
    2022-02-02
  • Pytorch中torch.stack()函數(shù)的深入解析

    Pytorch中torch.stack()函數(shù)的深入解析

    在pytorch中常見的拼接函數(shù)主要是兩個(gè),分別是:stack()和cat(),下面這篇文章主要給大家介紹了關(guān)于Pytorch中torch.stack()函數(shù)的相關(guān)資料,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-08-08
  • python如何求圓的面積

    python如何求圓的面積

    在本篇文章里小編給大家分享了關(guān)于python求圓面積的實(shí)例代碼及相關(guān)擴(kuò)展內(nèi)容,需要的朋友們可以學(xué)習(xí)下。
    2020-07-07
  • python進(jìn)程管理工具supervisor的安裝與使用教程

    python進(jìn)程管理工具supervisor的安裝與使用教程

    supervisor是用python寫的一個(gè)進(jìn)程管理工具,用來啟動(dòng),重啟,關(guān)閉進(jìn)程。下面這篇文章主要給大家介紹了關(guān)于python實(shí)現(xiàn)的進(jìn)程管理工具supervisor的安裝與使用的相關(guān)資料,需要的朋友可以參考借鑒,下面來一起看看吧。
    2017-09-09
  • python 2.6.6升級(jí)到python 2.7.x版本的方法

    python 2.6.6升級(jí)到python 2.7.x版本的方法

    這篇文章主要介紹了python 2.6.6升級(jí)到python 2.7.x版本的方法,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下
    2016-10-10
  • 利用Python繪制一個(gè)可愛的米老鼠

    利用Python繪制一個(gè)可愛的米老鼠

    turtle庫是一個(gè)點(diǎn)線面的簡(jiǎn)單圖像庫,在Python2.6之后被引入進(jìn)來,能夠完成一些比較簡(jiǎn)單的幾何圖像可視化。本文將利用turtle繪制一個(gè)可愛的米老鼠,感興趣的可以試一試
    2022-03-03
  • python eval 轉(zhuǎn)換k m到乘法計(jì)算的操作

    python eval 轉(zhuǎn)換k m到乘法計(jì)算的操作

    這篇文章主要介紹了python eval 轉(zhuǎn)換k m到乘法計(jì)算的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-05-05
  • pyinstaller打包后偶爾出現(xiàn)黑窗口一閃而過的問題及解決

    pyinstaller打包后偶爾出現(xiàn)黑窗口一閃而過的問題及解決

    這篇文章主要介紹了pyinstaller打包后偶爾出現(xiàn)黑窗口一閃而過的問題及解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-01-01
  • 創(chuàng)建Django項(xiàng)目圖文實(shí)例詳解

    創(chuàng)建Django項(xiàng)目圖文實(shí)例詳解

    這篇文章主要介紹了創(chuàng)建Django項(xiàng)目,結(jié)合圖文與實(shí)例形式詳細(xì)分析了Django項(xiàng)目創(chuàng)建的具體步驟與相關(guān)操作技巧,需要的朋友可以參考下
    2019-06-06

最新評(píng)論