1. 스페셜 메서드
파이썬의 스페셜 메서드 (또는 매직 메서드라고도 불림)는 더블 언더스코어(__)로 시작하고 끝나는 메서드 이름을 갖습니다. 이 메서드들은 특정 구문이나 내장 함수를 사용할 때 파이썬 인터프리터에 의해 자동으로 호출됩니다.
예를 들어, 객체에 대해 + 연산자를 사용하면 해당 객체의 add 메서드가 호출됩니다. 또는 len() 함수를 사용하면 len 메서드가 호출됩니다.
class Book:
def __init__(self, title):
self.title = title
book = Book('미친듯이 재밌는 파이썬')
print(book)
print(str(book)) # str메서드가 생략되어있다.
<main.Book object at 0x7f7622e8b4f0>
<main.Book object at 0x7f7622e8b4f0>
class Book:
def __init__(self, title):
self.title = title
def __str__(self): # object에 있는 str 메서드를 오버라이딩 한다.
return self.title
book = Book('미친듯이 재밌는 파이썬')
print(book)
print(str(book))
미친듯이 재밌는 파이썬
미친듯이 재밌는 파이썬
li = [1, 2, 3, 4, 5 ]
print(li)
print(str(li))
결과:
[1, 2, 3, 4, 5]
[1, 2, 3, 4, 5]
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
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 0x7f7622e4de40>
5
li = [1, 2, 3, 4, 5]
print(len(li))
결과:
5
파이썬의 내장모듈의 메서드가 이런 구조로 되어 있다는걸 확인 해 볼수 있다.
class Point:
def __init__(self, x, y): # x와 y의 값을 받아준다.
self.x = x
self.y = y
def __getitem__(self, index):
if index == 0: # 값의 인덱스가 0이면 x값 반환
return self.x
elif index == 1: # 값의 인덱스가 1이면 y값 반환
return self.y
else: # 그외 -1 반환
return -1
pt = Point(5, 3) # pt 객체 x 에 5, y에 3을 담아준다
print(pt[0]) # pt 의 0번째 인덱스 호출
print(pt[1]) # pt 의 1번째 인덱스 호출
print(pt[10]) # pt의 10번째 인덱스 호출
결과:
5 # 인덱스가 0이므로 x값 5 를 반환
3 # 인덱스가 1 이므로 y값 3 을 반환
-1 # 그외의 인덱스 이므로 -1 반환
li = [1, 2, 3, 4, 5]
print(li[0])
결과:
1
list[]의 구조
class CallaleObject:
def __call__(self, *args, **kwargs):
print(f'{args}, {kwargs}')
callableObj = CallaleObject()
callableObj(10, 20, 30, 40, 50, userid='apple', age=20, gender='여자')
결과:
(10, 20, 30, 40, 50), {'userid': 'apple', 'age': 20, 'gender': '여자'}
args 일반적인 값을 가변적으로 받는다 **kwargs 특정 키 값 으로 이루어진 값을 받는다.
'코딩 > 파이썬' 카테고리의 다른 글
파이썬 모듈 (0) | 2024.03.20 |
---|---|
파이썬 예외처리 (1) | 2024.03.20 |
파이썬 상속 (0) | 2024.03.19 |
클로저와 데코레이터 (1) | 2024.03.19 |
파이썬 - 객체지향과 클래스 (3) | 2024.03.18 |