티스토리
매직 키워드에 대해 알아봅시다.
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))
실행 결과 값은 아래 클릭 :
4
__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
이러한 스페셜 메서드를 사용함으로써 파이썬 클래스의 동작을 매우 유연하게 커스터마이징할 수 있습니다. 클래스를 더 풍부하고 파이썬스럽게 만들고 싶다면, 이러한 메서드들을 적극적으로 활용해보세요.
마무리
- 이번 포스팅은 special method, magic method, 매직 매소드..에 대해 알아봤습니다.
궁금한 사항은 lution2@gmail.com로 문의사항 주시면 답변 드리겠습니다.
감사합니다.
'PYTHON 파이썬 > 문법(Syntax)' 카테고리의 다른 글
파이썬 __file__ 현재 폴더의 파일 다루는법 (0) | 2024.03.24 |
---|---|
[python] dictionary 딕셔너리 (0) | 2024.01.15 |
[Python/파이썬] 리스트/LIST들 중에서 중복된 값 찾기 (0) | 2023.08.05 |
[파이썬초보] python glob 파일(file)처리 (0) | 2023.06.20 |
input() (0) | 2023.06.18 |