Python 如何保持类的一致性?
我正在尝试用python编写一个基本的21点游戏。但是当我创建一个类对象时 e、 g Card.Card_1或Deck.Deck_1它们是类对象,但当我尝试将它们转移到另一个类(例如,将52个卡对象转移到一个Deck对象)时,它们似乎会还原为列表,从而否定我的实例方法。谁能告诉我我错过了什么 Card_Class.pyPython 如何保持类的一致性?,python,class,inheritance,generator,Python,Class,Inheritance,Generator,我正在尝试用python编写一个基本的21点游戏。但是当我创建一个类对象时 e、 g Card.Card_1或Deck.Deck_1它们是类对象,但当我尝试将它们转移到另一个类(例如,将52个卡对象转移到一个Deck对象)时,它们似乎会还原为列表,从而否定我的实例方法。谁能告诉我我错过了什么 Card_Class.py value = ["A", "2", "3", "4", "5", "
value = ["A", "2", "3", "4", "5", "6", "7", "8", "9", "10", "J", "Q", "K"]
suit = ["Hearts", "Diamonds", "Clubs", "Spades"]
class Card():
def __init__(self, suit, value):
self.suit = suit
self.value = value
self.score = 0
甲板_类.py
import Card_Class
import random
class Deck():
def __init__(self):
self.deck = []
def populate_deck(self):
for s in Card_Class.suit :
for v in Card_Class.value:
self.deck.append([s, v])
return self.deck
def get_card(self):
return self.deck[0]
get_card方法返回一个列表类型,尽管我的self.deck=[],因此它已从一个deck对象更改为一个list对象?我在
populate_deck
方法中看到的只是对deck列表的一个附加,它添加了一个列表:
self.deck.append([s, v])
该行清楚地附加了一个包含当前诉讼和价值的列表。类型没有变化,只添加了一些列表。所以你的self.deck
看起来像
[["Hearts", "A"], ["Hearts", "2"], ["Hearts", "3"]]
等等
您可能打算使用其构造函数添加一个新的卡对象
self.deck.append(Card_Class.Card(s,v))
当你们在牌堆中储存套装和价值时,你们应该在牌堆中添加卡片。因此,使用具有正确s和v值的Card()调用Card构造函数,如下所示:
def populate_deck(self):
for s in Card_Class.suit :
for v in Card_Class.value:
self.deck.append(Card_Class.Card(s, v))
return self.deck