매직 메서드 - 컬렉션
1. 컬렉션 매직메서드 개요
파이썬의 컬렉션 매직메서드들을 사용하면 사용자 정의 클래스를 리스트나 딕셔너리처럼 동작하게 만들 수 있습니다.
2. __len__
메서드
len()
함수 호출 시 실행되는 메서드입니다. 컬렉션의 크기를 반환합니다. return
함수를 수정해보세요.
class Stack:
def __init__(self):
self.items = []
def push(self, item):
self.items.append(item)
def __len__(self):
return len(self.items)
stack = Stack()
stack.push(1)
stack.push(2)
print(len(stack)) # 출력: 2
3. __getitem__
메서드
대괄호로 접근할 때(obj[key]
) 실행되는 메서드입니다. return
함수를 수정해보세요.
class Store:
def __init__(self):
self.items = {'apple': 500, 'banana': 800}
def __getitem__(self, key):
return self.items[key]
store = Store()
print(store['apple']) # 출력: 500
4. __setitem__
메서드
대괄호로 값을 할당할 때(obj[key] = value
) 실행되는 메서드입니다.
class Grades:
def __init__(self):
self.scores = {}
def __setitem__(self, student, score):
if 0 <= score <= 100:
self.scores[student] = score
else:
raise ValueError("점수는 0-100 사이여야 합니다")
grades = Grades()
grades['김학생'] = 85
5. __delitem__
메서드
del
키워드로 삭제할 때 실행되는 메서드입니다.
class ShoppingCart:
def __init__(self):
self.items = {'apple': 2, 'banana': 3}
def __delitem__(self, item):
del self.items[item]
cart = ShoppingCart()
del cart['apple']
6. __contains__
메서드
in
연산자 사용 시 실행되는 메서드입니다.
class Users:
def __init__(self):
self.names = {'admin', 'guest', 'user'}
def __contains__(self, name):
return name in self.names
users = Users()
print('admin' in users) # 출력: True
print('hacker' in users) # 출력: False {"packages":["numpy","pandas","matplotlib","lxml"]}