"일꾼이 일을 잘하려면 먼저 도구를 갈고 닦아야 한다." - 공자, 『논어』.
첫 장 > 프로그램 작성 > Python의 인스턴스 메서드와 클래스 메서드: 언제 \"self\"와 \"cls\"를 사용해야 합니까?

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

2024-11-08에 게시됨
검색:490

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

클래스 및 인스턴스 메서드의 미묘한 차이 살펴보기: Beyond Self와 Cls

Python Enhancement Proposal(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 클래스의 인스턴스를 생성하고 "소개" 메소드를 호출하면 인스턴스 자체는 자체 매개변수로 전달되어 해당 속성(이 경우 "name" 속성)에 액세스할 수 있습니다.

클래스 메서드: Cls 수용

반면에 클래스 메서드는 개별 인스턴스가 아닌 클래스 자체에서 작동합니다. 이를 통해 클래스 구조나 동작을 수정하거나 검사할 수 있습니다. 이러한 메서드의 첫 번째 매개 변수는 메서드가 호출되는 클래스를 나타내는 cls입니다.

다음 예에서는 클래스 메서드를 보여줍니다.

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

이 메서드는 특정 개체 속성과 상호 작용하지 않으므로 인스턴스가 필요하지 않습니다. 대신 클래스 자체에서 작동하여 구조에 대한 정보를 제공합니다.

클래스 메서드는 하위 클래스가 상위 클래스의 동작을 수정하거나 확장할 수 있도록 허용하므로 상위 클래스에서 상속할 때 특히 유용합니다. 예를 들어, 다음 하위 클래스는 Cls 클래스의 "소개" 메서드를 재정의합니다.

class SubCls(Cls):
    pass

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

첫 번째 매개변수로 "cls"를 사용하면 "introduce" 메서드를 하위 클래스에서 직접 호출할 수 있으므로 하위 클래스가 자체 동작을 정의할 수 있습니다. 여전히 상위 클래스에서 상속된 속성에 액세스하고 있습니다.

최신 튜토리얼 더>

부인 성명: 제공된 모든 리소스는 부분적으로 인터넷에서 가져온 것입니다. 귀하의 저작권이나 기타 권리 및 이익이 침해된 경우 자세한 이유를 설명하고 저작권 또는 권리 및 이익에 대한 증거를 제공한 후 이메일([email protected])로 보내주십시오. 최대한 빨리 처리해 드리겠습니다.

Copyright© 2022 湘ICP备2022001581号-3