파이썬 스페셜 메서드 (`__len__`, `__str__`, ...) 는 클래스 만들 때 구현 하면 어떤 이점이 있죠?

조회수 478회

파이썬에서 스페셜메서드 (__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( )하는 것 보면 중요한 것은 함수 기능이지 이름이 아닌것 같아서요..

그럼에도 스페셜 메소드의 이름으로 구현하면 얻는 이점이 있을 까요?

1 답변

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)