这是我的第一篇StackOverflow帖子,所以请告诉我是否做错了!
我试图用python制作纸牌游戏,并被告知使用基于类的系统将是最佳选择。
在尝试这样做时,将所有卡放入卡座时,这些类似乎会将值复制到代码的board.cards部分。
hidesOnDeactivate
程序返回以下内容:
#definitions and imports
import random
class Card:
suit = ""
base = ""
class Hand:
cards = []
poweri = 0
powerii = 0
class Stack:
cards = []
#instantiates classes
deck = Stack()
board = Stack()
player = Hand()
dealer = Hand()
#creates ordered empty deck
def newdeck(obj):
for x in ["2","3","4","5","6","7","8","9","A","B","C","D","E"]:
for y in ["C","D","H","S"]:
card = Card()
card.base = x
card.suit = y
obj.cards.append(card)
#shuffles deck
def shuffle():
random.shuffle(deck.cards)
newdeck(deck)
#disabled to make debug easier
#shuffle()
#prints entire deck
print("\nDeck")
for i in range(len(deck.cards)):
print(deck.cards[i].base, deck.cards[i].suit)
print(len(deck.cards))
#prints entire board
print("\nBoard")
for i in range(len(board.cards)):
print(board.cards[i].base, board.cards[i].suit)
木板应该是空的???
关于, 亚历克斯
答案 0 :(得分:1)
Stack.cards
是可变的类属性。这意味着,所有类实例都将引用具有相同数据的同一对象。
您可能希望每个对象都有自己的数据。要更改它,请在cards
方法中实例化__init__()
:
class Stack:
def __init__(self):
self.cards = []