class Poker:
“”“扑克”“”
def \_\_init\_\_(self):
# 通过列表的生成式语法创建一个装52张牌的列表
self.cards = [Card(suite, face) for suite in Suite
for face in range(1, 14)]
# current属性表示发牌的位置
self.current = 0
def shuffle(self):
"""洗牌"""
self.current = 0
# 通过random模块的shuffle函数实现列表的随机乱序
random.shuffle(self.cards)
def deal(self):
"""发牌"""
card = self.cards[self.current]
self.current += 1
return card
@property
def has\_next(self):
"""还有没有牌可以发"""
return self.current < len(self.cards)

* 可以通过下面的代码来测试下`Poker`类。
poker = Poker()
poker.shuffle()
print(poker.cards)
* 定义玩家类。
class Player:
“”“玩家”“”
def \_\_init\_\_(self, name):
self.name = name
self.cards = []
def get\_one(self, card):
"""摸牌"""
self.cards.append(card)
def arrange(self):
self.cards.sort()
* 创建四个玩家并将牌发到玩家的手上。
poker = Poker()
poker.shuffle()
players = [Player(‘东邪’), Player(‘西毒’), Player(‘南帝’), Player(‘北丐’)]
for _ in range(13):
for player in players:
player.get_one(poker.deal())
for player in players:
player.arrange()
print(f’{player.name}: ‘, end=’')
print(player.cards)
* 执行上面的代码会在`player.arrange()`那里出现异常,因为`Player`