클래스 및 인스턴스 메서드의 미묘한 차이 살펴보기: Beyond Self와 Cls
Python Enhancement Proposal(PEP) 8에서는 다음을 사용하도록 제안합니다. 인스턴스 메서드의 첫 번째 인수는 "self"이고 클래스 메서드의 첫 번째 인수는 "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 클래스의 "소개" 메서드를 재정의합니다.
<code class="python">class SubCls(Cls): pass SubCls.introduce() # outputs: Hello, I am <class 'SubCls'></code>
"cls"를 첫 번째 매개 변수로 사용하면 "소개" 메서드를 하위 클래스에서 직접 호출할 수 있습니다. 상위 클래스에서 상속된 속성에 계속 액세스하면서 자체 동작을 정의합니다.
위 내용은 Python의 인스턴스 메서드와 클래스 메서드: 언제 'self'와 'cls'를 사용해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!