파이썬
스페셜(매직) 메소드
96__혀누
2024. 3. 20. 00:45
스페셜 메소드
파이썬의 스페셜 메서드 (또는 매직 메서드라고도 불림)는 더블 언더스코어(__)로 시작하고 끝나는 메서드 이름을 갖습니다. 이 메서드들은 특정 구문이나 내장 함수를 사용할 때 파이썬 인터프리터에 의해 자동으로 호출됩니다.
예를 들어, 객체에 대해 + 연산자를 사용하면 해당 객체의 add 메서드가 호출됩니다. 또는 len() 함수를 사용하면 len 메서드가 호출됩니다.
__str__ : 객체를 문자열로 표현하는 메서드. print() 함수나 str() 함수를 사용할 때 호출됩니다.
class Book:
def __init__(self, title):
self.title = title
book = Book('미친듯이 재밌는 파이썬')
print(book)
# 문자열로 바꾸는데 사용하던 함수지만, 원래 기존 객체의 이름과 주소를 출력해주는 함수이다.
print(str(book))
>>
<__main__.Book object at 0x7eab39383910>
<__main__.Book object at 0x7eab39383910>
class Book:
def __init__(self, title):
self.title = title
def __str__(self): # str 메서드 오버라이딩
return self.title
book = Book('미친듯이 재밌는 파이썬')
print(book)
print(str(book))
>>
미친듯이 재밌는 파이썬
미친듯이 재밌는 파이썬
__add__ : + 연산자를 사용할 때 호출되는 메서드
class Calc:
def __init__(self, value):
self.value = value
def __add__(self, other): # add 메서드 오버라이딩
return self.value + other.value
num1 = Calc(5)
num2 = Calc(10)
result = num1 + num2
print(result)
>> 15
__len__ : len() 함수를 사용할 때 호출되는 메서드
class Queue:
def __init__(self):
self.items = [1, 2, 3, 4, 5]
def __len__(self): # len 메서드 오버라이딩
return len(self.items)
queue = Queue()
print(queue)
print(len(queue))
>>
<__main__.Queue object at 0x7eab39383c10>
5
__getitem__ : 인덱싱을 사용할 때 호출되는 메서드
class Point:
def __init__(self, x, y):
self.x = x
self.y = y
def __getitem__(self, index): # getitem 메서드 오버라이딩
if index == 0:
return self.x
elif index == 1:
return self.y
else:
return -1
pt = Point(5, 3)
print(pt[0])
print(pt[1])
print(pt[10])
>>
5
3
-1
__call__ : 객체를 함수처럼 호출할 때 사용되는 메서드
class CallableObject:
def __call__(self, *args, **kwargs): # call 메서드 오버라이딩
print(f'{args}, {kwargs}')
# args : 사용자가 원하는 만큼의 매개변수를 지정할 수 있다. ( args 변수명은 원하는데로 작성해도 되나, 관례적으로 args로 사용한다 )
# kwargs : 사용자가 원하는 만큼의 키워드와 값 매개변수를 지정할 수 있다. ( kwargs 변수명은 원하는데로 작성해도 되나, 관례적으로 args로 사용한다 )
callableObj = CallableObject()
callableObj(10, 20, 30, 40, 50, userid='apple', age=20, gender='여자')
>>
(10, 20, 30, 40, 50), {'userid': 'apple', 'age': 20, 'gender': '여자'}