본문 바로가기
개발/Python

[파이썬, Python] 매직 메서드(스페셜 메서드) 활용법 총정리

by 꾀돌이 개발자 2024. 7. 11.
반응형

 

매직 메서드(스페셜 메서드) 활용하기

 

 

- 매직 메서드는 두 개의 밑줄로 시작하고 끝나는 특별한 메서드들입니다.

- 이 메서드들은 특정 상황에서 자동으로 호출되며, 파이썬의 다양한 기능을 지원합니다.

- 예를 들어, 객체의 생성, 소멸, 연산자 오버로딩 등에서 사용됩니다.

 

 

[매직 메서드(스페셜 메서드)의 활용법]

 

 

1. __init__: 객체 초기화 메서드 (생성자)

- 객체가 생성될 때 자동으로 호출되어 초기 상태를 설정합니다.

class MyClass:
    def __init__(self, value):
        self.value = value

obj = MyClass(10)
print(obj.value)  # 10 출력

- 활용법

  • 객체를 생성할 때 필요한 초기 값을 설정하는 데 사용됩니다.
  • 여러 속성을 초기화하거나 필요한 설정 작업을 수행할 수 있습니다.

 

 

2. __str__: 객체의 문자열 표현을 반환

- print() 함수나 str() 함수가 호출될 때 사용됩니다. 사람이 읽기 쉬운 형태로 객체를 표현합니다.

class MyClass:
    def __init__(self, value):
        self.value = value

    def __str__(self):
        return f"MyClass with value {self.value}"

obj = MyClass(10)
print(obj)  # MyClass with value 10 출력

- 활용법

  • 객체를 쉽게 이해할 수 있도록 정보를 제공하는 문자열로 표현할 수 있습니다.
  • 디버깅이나 로깅 시 유용하게 사용할 수 있습니다.

 

 

3. __repr__: 객체의 공식적인 문자열 표현을 반환

- repr() 함수가 호출될 때 사용됩니다. 디버깅 용도로 객체의 상세 정보를 표현합니다.

class MyClass:
    def __init__(self, value):
        self.value = value

    def __repr__(self):
        return f"MyClass({self.value})"

obj = MyClass(10)
print(repr(obj))  # MyClass(10) 출력

- 활용법

  • 객체를 재현 가능한 문자열로 표현합니다.
  • 디버깅 시 객체의 상태를 확인하는 데 사용됩니다.

 

 

4. __add__: + 연산자 오버로딩

- "+" 연산자를 사용하여 두 객체를 더할 때 호출됩니다.

class MyClass:
    def __init__(self, value):
        self.value = value

    def __add__(self, other):
        return MyClass(self.value + other.value)

obj1 = MyClass(10)
obj2 = MyClass(20)
result = obj1 + obj2
print(result.value)  # 30 출력

- 활용법

  • 사용자 정의 객체 간의 연산을 정의할 수 있습니다.
  • 벡터나 행렬 같은 수학적 객체의 연산을 정의할 때 유용합니다.

 

 

5. __len__: 객체의 길이를 반환

- len() 함수가 호출될 때 사용됩니다.

class MyCollection:
    def __init__(self, items):
        self.items = items

    def __len__(self):
        return len(self.items)

collection = MyCollection([1, 2, 3, 4, 5])
print(len(collection))  # 5 출력

- 활용법

  • 컬렉션 객체의 길이를 반환하는 기능을 정의할 수 있습니다.
  • 리스트, 집합, 사전 등의 사용자 정의 컬렉션에 적용할 수 있습니다.

 

반응형