-
CH1. 특별메서드Python Study 2020. 7. 21. 14:08
200721
제목 1
1. 특별 메서드
(예시)
__len()__
: 길이를 return__getitem()__
: obj[key] 형태의 호출을 지원hello
Class FrenchDeck: def __getitem__(self, position): return self._cards[position]
위에서 처럼 __getitem__의 return이 List로 재정의 된 경우, Object를 상속받았음에도 불구하고 instance는 표준 파이썬 List처럼 행동한다. 따라서 reversed(), choice(), sorted() 등을 사용할 수 있게 된다. 아래 4가지 예시를 보자
deck = FrenchDeck() # EX 1 : Random Choice from random import choice choice(deck) # EX 2 : Act as a List deck[:3] # EX 3 : Iterable & Reversable for card in reversed(deck): print(card) # EX 4 : Advanced Sort # Part 1 : Comparator suit_values = dict(spades=3, hearts=2, diamonds=1, clubs=0) def spades_high(card): rank_value = FrenchDeck.ranks.index(card.rank) return rank_value * len(suit_values) + suit_values[card.suit] # number, shape 순으로 높은 Score # Part 2 : Sort for card in sorted(deck, key=spades_high): print(card)
위와 같이 특별 메서드를 customize 하지 않는 경우, list, str, bytearray 등 파이썬의 내장 자료형에서는 len(), obj[pos] 등이 호출 될 때, 파이썬 인터프리터는 CPython의 경우 C struct를 직접 찾아서 값을 반환한다.
'Python Study' 카테고리의 다른 글
9. Django 기초 (7) : MVC (0) 2020.03.05 8. Django 기초 (6) : Login Validation (0) 2020.03.04 7. Django 기초 (5) : HTML inheritance (0) 2020.03.04 6. Django 기초 (4) : Session, Redirect (0) 2020.03.03 5. Django 기초 (3) : from CDN to STATIC (0) 2020.03.03