1. 스페셜 메서드
파이썬의 스페셜 메서드 (또는 매직 메서드라고도 불림)는 더블 언더스코어(__)로 시작하고 끝나는 메서드 이름을 갖습니다. 이 메서드들은 특정 구문이나 내장 함수를 사용할 때 파이썬 인터프리터에 의해 자동으로 호출됩니다.
예를 들어, 객체에 대해 + 연산자를 사용하면 해당 객체의 __add__ 메서드가 호출됩니다. 또는 len() 함수를 사용하면 __len__ 메서드가 호출됩니다.
1. __init__ : 객체 초기화 메서드
2. __str__ : 객체를 문자열로 표현하는 메서드. print() 함수나 str() 함수를 사용할 때 호출됩니다.
class Book:
def __init__(self, title):
self.title = title
book = Book("미친듯이 재밌는 파이썬")
print(book)
print(str(book)) #주소값출력
class Book:
def __init__(self, title):
self.title = title
def __str__(self): # object 클래스를 오버라이딩
__str__ 함수 속성이 바뀜
return self.title
book = Book("미친듯이 재밌는 파이썬")
print(book)
print(str(book)) #주소가 아닌 속성값이 나오게 바뀜
<__main__.Book object at 0x7c2693f77850> <__main__.Book object at 0x7c2693f77850> 미친듯이 재밌는 파이썬 미친듯이 재밌는 파이썬 |
3. __add__ : + 연산자를 사용할 때 호출되는 메서드
class Calc:
def __init__(self, value):
self.value = value
def __add__(self, other):
return self.value + other.value
num1 = Calc(5)
result = num1 + 10
print(result) # 5 + 10 = 15가 나올까?
오류 실행안됨 |
class Calc:
def __init__(self, value):
self.value = value
def __add__(self, other):
return self.value + other.value
num1 = Calc(5)
num2 = Calc(10)
result = num1 + num2 # 실행됨
print(result)
15 |
4. __len__ : len() 함수를 사용할 때 호출되는 메서드
class Queue:
def __init__(self):
self.items = []
def __len__(self):
return len(self.items)
queue = Queue()
print(queue)
print(len(queue))
<__main__.Queue object at 0x7c2693f77490> 5 |
5. __getitem__ : 인덱싱을 사용할 때 호출되는 메서드
class Point:
def __init__(self, x, y):
self.x = x
self.y = y
print(p1[0], p1[1], p1[100])
def __getitem__(self, index): # __getitem__에 오버라이딩 / 키를 가져오는 함수
if index == 0:
return self.x
elif index == 1:
return self.y
else:
return -1
p1 = Point(3, 4)
print(p1[0], p1[1], p1[100])
5 3 -1 |
6. __call__ : 객체를 함수처럼 호출할 때 사용되는 메서드
class CallableObject:
def __call__(self, *args, **kwargs):
print(f"Called with arguments: {args} and keyword arguments: {kwargs}")
callable_obj = CallableObject()
callable_obj(1, 2, 3, a="A", b="B")
Called with arguments: () and keyword arguments: {} Called with arguments: (10, 20, 30, 40, 50) and keyword arguments: {'a': 'A', 'b': 'B'} |
'Python > 개념' 카테고리의 다른 글
Day 6. 과제_가위바위보 (0) | 2024.03.18 |
---|---|
Day 7-3. 파이썬의 예외처리 (0) | 2024.03.18 |
Day 7-1. 파이썬 상속 (0) | 2024.03.18 |
Day 6-3. 객체지향과 클래스 (0) | 2024.03.18 |
Day 6-2. 콜백함수와 람다함수 (0) | 2024.03.15 |