Python/Utils

[Python Utils] Python 매직메소드 (MagicMethod) 이해하기

yubi5050 2022. 10. 14. 16:54

매직메소드란?

"__Method__" 형태의 인스턴스(객체)가 생성될 때 인터프리터에 의해 자동으로 호출되는 메소드

 

매직메소드 예시

__init__, __call__, __getattribute__ 등은 모두 매직메소드의 형태로 호출된다.

 

# 1. 기본 MagicMethod
class A:
    def __init__(self):
        print("A 클래스 __init__ 생성자 매직메소드로 실행됨")
        
# 2. Class를 함수 호출하기, __call__ 매직메소드
class B:
    def __call__(self, *args, **kwargs):
        print("B 클래스 __call__ 매직메소드로 호출됨")

b = B()
b()

# 3. '.' 도 __getattribute__ 의 매직메소드
class C:
    def __getattribute__(self, item):
        print("__getattribute__ 함수를 호출하여 ", item, "의 객체에 접근")

c = C()
c.data

 

매직메소드 목록 확인 방법

dir(객체) 명령어를 통해 목록을 확인 할 수 있다.

 

dir (객체) 명령어 결과