Pythonic编程(一)——python风格的纸牌类
python编程风格也叫Pythonic,这一系列文章记录学习点滴。
前言
本篇通过一个简单的例子实现__getitem__和__len__方法,例子是实现52张不含大小王的扑克牌,包括四个花色和2-10、J、Q、K、A(这也是我们的默认大小顺序)。
一、创建一个纸牌类
示例代码1-1:
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] # 创建了13*4 = 52张牌
def __len__(self):
return len(self._cards)
def __getitem__(self, position):
return self._cards[position]
首先, 我们用 collections.namedtuple 构建了一个简单的类来表示一张纸牌。通过这个Card对象可以获取我们任何想要的纸牌:
>>