본문 바로가기

언어/Python

[ Python ] Class 의 method ( 멤버 함수) 정의하기

반응형

파이썬 클래스의 메서드는 객체의 동작을 정의하는 함수입니다. 클래스 내부에 정의된 함수로, 객체의 상태를 변경하거나 특정 작업을 수행할 수 있습니다. 메서드는 기본적으로 객체 인스턴스와 연결되어 있어, 객체 상태(속성)에 접근하거나 수정할 수 있습니다.

메서드의 종류

  1. 인스턴스 메서드 (Instance Method)
    • 객체의 인스턴스에서 호출되는 메서드입니다.
    • 메서드 정의 시 첫 번째 인수로 self를 받으며, 이는 호출한 객체 자체를 가리킵니다.
  2. 클래스 메서드 (Class Method)
    • 클래스 자체에서 호출되는 메서드입니다.
    • 메서드 정의 시 첫 번째 인수로 cls를 받으며, 이는 호출한 클래스 자체를 가리킵니다.
    • @classmethod 데코레이터를 사용하여 정의합니다.
  3. 정적 메서드 (Static Method)
    • 클래스나 인스턴스에 관계없이 호출될 수 있는 메서드입니다.
    • selfcls와 같은 특별한 첫 번째 인수를 받지 않습니다.
    • @staticmethod 데코레이터를 사용하여 정의합니다.

예제 코드

다음은 위에서 설명한 세 가지 메서드를 포함하는 예제 코드입니다.

class MyClass:
    class_attribute = "I am a class attribute"

    def __init__(self, name):
        self.name = name  # 인스턴스 속성

    # 인스턴스 메서드
    def instance_method(self):
        return f"This is an instance method called by {self.name}"

    # 클래스 메서드
    @classmethod
    def class_method(cls):
        return f"This is a class method. Class attribute: {cls.class_attribute}"

    # 정적 메서드
    @staticmethod
    def static_method():
        return "This is a static method. No access to instance or class variables"

# 인스턴스 생성
obj = MyClass("Alice")

# 인스턴스 메서드 호출
print(obj.instance_method())  # 출력: This is an instance method called by Alice

# 클래스 메서드 호출
print(MyClass.class_method())  # 출력: This is a class method. Class attribute: I am a class attribute

# 정적 메서드 호출
print(MyClass.static_method())  # 출력: This is a static method. No access to instance or class variables

설명

  1. 인스턴스 메서드 (instance_method):
    • 이 메서드는 self를 통해 객체 인스턴스에 접근하여 해당 객체의 속성(name)을 사용할 수 있습니다.
    • 객체 인스턴스(obj)를 통해 호출됩니다.
  2. 클래스 메서드 (class_method):
    • 이 메서드는 클래스 변수(class_attribute)에 접근하기 위해 cls를 사용합니다.
    • 클래스 자체(MyClass)를 통해 호출됩니다. 클래스 메서드는 클래스 변수를 조작하거나 클래스 레벨의 동작을 정의할 때 유용합니다.
  3. 정적 메서드 (static_method):
    • 이 메서드는 클래스나 인스턴스와 관련이 없는 독립적인 작업을 수행할 수 있습니다.
    • 클래스나 인스턴스를 통해 호출할 수 있지만, 클래스 상태나 인스턴스 상태에 접근하지 않습니다.

요약

  • 인스턴스 메서드는 객체의 상태를 조작하는데 주로 사용됩니다.
  • 클래스 메서드는 클래스 레벨에서 동작을 수행하거나 클래스 변수를 조작하는데 사용됩니다.
  • 정적 메서드는 클래스나 인스턴스 상태와 무관한 작업을 수행할 때 유용합니다.
반응형