파이썬에서 스페셜메서드 (__len__
, __str__
이런거요) 는 클래스 만들 때 구현 하면 어떤 이점이 있죠?
인터넷에서 찾은 예인데
import collections
Card = collections.namedtuple('Card', ['rank', 'suit'])
class FrenchDeck:
ranks = [str(n) for n in range(2, 11)] + list('JQKA')
suits = 'spades diamonds clubs hearts'.split()
def __init__(self):
self._cards = [Card(rank, suit) for suit in self.suits
for rank in self.ranks]
def __len__(self):
return len(self._cards)
def __getitem__(self, position):
return self._cards[position]
여기서 __len__
으로 이름 지은 것을 length
라고 해놓고 써도 무방한 거 아닐까요?
어차피 return 에서 len( )
하는 것 보면 중요한 것은 함수 기능이지 이름이 아닌것 같아서요..
그럼에도 스페셜 메소드의 이름으로 구현하면 얻는 이점이 있을 까요?