728x90
반응형

 티스토리 

 

매직 키워드에 대해 알아봅시다.

 Dunder method , Double UnderScore, Magic keyword, Special methods 라고도 불리기도 하지만, 
공식 문서에서는 special method라고 사용되네요.

1. 예제 모음 코드 리뷰

__init__  :
__init__ 메서드는 파이썬의 매직 메서드(또는 스페셜 메서드) 중 하나로, 클래스의 인스턴스가 생성될 때 자동으로 호출되는 생성자 함수입니다. 이 메서드는 인스턴스가 가지고 있어야 할 초기 상태를 설정하는 데 주로 사용됩니다.

class MyClass:
    def __init__(self, value1, value2):
        self.attribute1 = value1
        self.attribute2 = value2

# MyClass의 인스턴스 생성 시, __init__ 메서드가 자동으로 호출됩니다.
my_instance = MyClass("Hello", 123)
print(my_instance.attribute1)  # 출력: Hello
print(my_instance.attribute2)  # 출력: 123

위의 예제 코드 리뷰는 아래 클릭 :

더보기

__init__ 메서드는 첫 번째 매개변수로 인스턴스 자기 자신을 의미하는 self를 반드시 포함해야 합니다. 그 뒤에는 클래스 인스턴스화 시 필요한 추가 매개변수를 정의할 수 있습니다.

 

__str__: 인스턴스를 문자열로 변환할 때의 동작을 정의합니다. print() 함수나 str()에 객체를 전달했을 때 호출됩니다.

class MyClass:
    def __init__(self, name):
        self.name = name
        
    def __str__(self):
        return f"MyClass 인스턴스의 이름은 {self.name}입니다."

my_instance = MyClass("Test")
print(my_instance)

 

__repr__: 인스턴스의 부모 객체 이름을 확인합니다. 주로 디버깅과 로깅 목적으로 사용됩니다.

class MyClass:
    def __init__(self, name):
        self.name = name
        
    def __repr__(self):
        return f'MyClass("{self.name}")'

my_instance = MyClass("Test")
print(repr(my_instance))

실행 결과 아래 클릭

더보기

부모 객체와 입력한 argument 값이 출려 되는걸 알수 있다.

 

__len__: 컨테이너 타입의 길이를 반환합니다. len() 함수가 호출될 때 실행됩니다.

class MyContainer:
    def __init__(self, data):
        self.data = data
        
    def __len__(self):
        return len(self.data)

container = MyContainer([1, 2, 3, 4])
print(len(container))

실행 결과 값은 아래 클릭 :

 

__getitem__: 컨테이너 타입에서 항목을 가져올 때의 동작을 정의합니다.

class MyContainer:
    def __init__(self, data):
        self.data = data
        
    def __getitem__(self, key):
        return self.data[key]

container = MyContainer(["a", "b", "c"])
print(container[1])  # 출력: b

 

이러한 스페셜 메서드를 사용함으로써 파이썬 클래스의 동작을 매우 유연하게 커스터마이징할 수 있습니다. 클래스를 더 풍부하고 파이썬스럽게 만들고 싶다면, 이러한 메서드들을 적극적으로 활용해보세요.

 

728x90

 

마무리

- 이번 포스팅은 special method, magic method, 매직 매소드..에 대해 알아봤습니다.

 
 

궁금한 사항은 lution2@gmail.com로 문의사항  주시면 답변 드리겠습니다.
감사합니다.

 

 

728x90
반응형

+ Recent posts