>  기사  >  백엔드 개발  >  Python의 인스턴스 메서드와 클래스 메서드: 언제 \"self\"와 \"cls\"를 사용해야 합니까?

Python의 인스턴스 메서드와 클래스 메서드: 언제 \"self\"와 \"cls\"를 사용해야 합니까?

Mary-Kate Olsen
Mary-Kate Olsen원래의
2024-10-26 03:01:28278검색

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

클래스 및 인스턴스 메서드의 미묘한 차이 살펴보기: 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.