」工欲善其事,必先利其器。「—孔子《論語.錄靈公》
首頁 > 程式設計 > Python 中的實例方法與類別方法:什麼時候應該使用“self”和“cls”?

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

發佈於2024-11-09
瀏覽:299

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

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

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

實例方法:自我優勢

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

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

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))

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

類別方法:擁抱 Cls

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

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

class Cls:
    @classmethod
    def introduce(cls):
        print("Hello, I am %s!" % cls)

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

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

class SubCls(Cls):
    pass

SubCls.introduce()
# outputs: Hello, I am 

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

最新教學 更多>

免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。

Copyright© 2022 湘ICP备2022001581号-3