深入研究類別和實例方法的細微差別: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