Python内置方法的应用--纸牌游戏
import json Card=namedtuple('Card',['tank','suit']) class Deck: __tanks=[str(n) for n in range(2,11)]+list('JQKA') __suits=['黑桃','红心','方块','梅花'] def __init__(self): self.__card=[Card(tank,suit) for tank in self.__tanks for suit in self.__suits] def __getitem__(self, item): return self.__card[item] def __setitem__(self, key, value): self.__card[key]=value def __str__(self): return json.dumps(self.__card,ensure_ascii=False) def __len__(self): return len(self.__card) #1.查看所有牌.实现print(),前提是重新的__str__方法 deck=Deck() print(deck) #2.通过choice,抓一张牌,前提是重新实现了__getitem__方法.因为choice只能调用序列化seq的对象。且 # 而实现seq对象的内置方法是__getitem from random import choice print(choice(deck[5])) #3.通过shuffle,洗牌。洗牌一样是只有调用序列化seq对象,即要重新实现__setitem__方法,同时洗牌要建立在有长度的情况。 #故要重新实现len方法 from random import shuffle shuffle(deck) print(deck)