Python 中的實例方法與類別方法:什麼時候應該使用'self”和'cls”?

Mary-Kate Olsen
發布: 2024-10-26 03:01:28
原創
378 人瀏覽過

  Instance vs. Class Methods in Python: When Should You Use

深入研究類別和實例方法的細微差別:Beyond Self 與Cls

Python 增強提案(PEPself”作為實例方法中的第一個參數,「cls」作為類別方法中的第一個參數。這種差異源自於這些方法在處理實例和類別時所扮演的不同角色。

實例方法:自身優勢

實例方法在實例的實例上呼叫班級。它們通常與特定實例的特定屬性和行為互動。這些方法的第一個參數是 self,它代表呼叫方法的實例。

例如,下面的類別定義了一個「引入」實例方法:

<code class="python">class Inst:
    def __init__(self, name):
        self.name = name

    def introduce(self):
        print("Hello, I am %s, and my name is %s" % (self, self.name))</code>
登入後複製

當我們建立Inst 類別的實例並呼叫其「introduce」方法時,實例本身作為self 參數傳遞,允許我們存取其屬性(在本例中為“name”屬性)。

類別方法:擁抱 Cls

另一方面,類別方法會對類別本身而不是單一實例進行操作。它們允許我們修改或檢查類別結構或行為。這些方法的第一個參數是 cls,它代表呼叫該方法的類別。

以下範例說明了類別方法:

<code class="python">class Cls:
    @classmethod
    def introduce(cls):
        print("Hello, I am %s!" % cls)</code>
登入後複製

此方法不需要一個實例,因為它不會與特定物件屬性互動。相反,它對類別本身進行操作,提供有關其結構的資訊。

類別方法在從父類別繼承時特別有用,因為它們允許子類別修改或擴展父類別的行為。例如,下面的子類別重寫了Cls 類別的“introduce”方法:

<code class="python">class SubCls(Cls):
    pass

SubCls.introduce()
# outputs: Hello, I am <class 'SubCls'></code>
登入後複製

透過使用“cls”作為第一個參數,可以直接在子類別上呼叫“introduce”方法,從而允許它定義自己的行為,同時仍然存取從父類別繼承的屬性。

以上是Python 中的實例方法與類別方法:什麼時候應該使用'self”和'cls”?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板