示例1-1 一摞有序的纸牌
知识点:
collections.namedtuple
构建了一个简单的类,表示单张纸牌。
from collections import namedtuple
Card = 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]
- 使用
namedtuple
构建只有属性而没有自定义方法的类对象。
- 实例化FrenchDeck类
- 支持索引切片
由于__getitem__
方法把操作委托给self._cards
的[]
运算符,一摞牌自动支持切片(slicing)。
- 支持迭代索引
- 支持
in
操作符
- 对牌进行排序