这一节会展示如何实现__getitem__和__len__这两个特殊的方法
首先看一个利用python构建的纸牌类,这个例子短小却包含了python一些非常重要的特征:
import collections
Card = collections.namedtuple('Card', ['rank', 'suit'])
class FrenchDesk(object):
ranks = [str(i) for i 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]
desk = FrenchDesk()
print(len(desk))
print(desk[-1])
Return:
5