# -*- coding: UTF-8 -*- from collections import namedtuple import json #只包含属性的类 Card = namedtuple('Card',['rank','suit']) #rank 牌面的大小 suit 牌面的花色 # c1 = Card(2,'红心') # print(c1) # print(c1.rank,c1.suit) class FrankDeck: ranks = [str(n) for n in range(2,11)] + list('JQKA') suits = ['红心','方块','梅花','黑桃'] def __init__(self): self._cards = [Card(rank,suit) for rank in FrankDeck.ranks for suit in FrankDeck.suits] # for suit in FrankDeck.suits: # for rank in FrankDeck.ranks: # self._cards = Card(suit,rank) def __len__(self): return len(self._cards) def __getitem__(self, item): return self._cards[item] def __setitem__(self, key, value): self._cards[key] = value def __str__(self): return json.dumps(self._cards,ensure_ascii=False) #不让中文转义 deck = FrankDeck() print(deck[11]) #选牌 from random import choice print(choice(deck)) #抽牌 from random import shuffle shuffle(deck) #洗牌 print(deck[11]) #选牌 print(deck[:-1]) print(deck[:5]) print(deck) #类中加了__str__方法所以打印出来不再是内存地址