【发布时间】:2015-12-14 21:43:27
【问题描述】:
我才刚刚开始真正涉足 Python,所以这可能有一个非常简单的答案,但此刻我只是傻眼了。这是我的代码的要点:
class deck:
cards = [
'ace of spades',
'two of spades',
'three of spades',
] #...and so on
def deal(self, hand): #takes the last card in the deck and transfers it to the supplied hand
hand.add_card(self.cards.pop(-1))
class hand:
cards = []
def add_card(self, card):
self.cards.append(card)
foobar = deck()
hand1 = hand()
hand2 = hand()
foobar.deal(hand1)
print(hand2.cards) #['three of spades']
我想要的是能够通过调用deck.deal(hand) 将牌从牌组发到手上。
好消息是,上面的代码确实从foobar 中取出一张卡片并将其添加到hand1。坏消息是……它还将它添加到hand2。
这可能是我在编程中遇到的最困惑的事情。 hand1 和 hand2 很明显是两个不同的变量!那么为什么给一只手发牌也会给另一只手发同一张牌呢?我的意思是,唯一提到hand2 的时间是它被创建的时候。
【问题讨论】:
-
其实更多的是stackoverflow.com/questions/207000/…的复制品。它可能会帮助您查看链接问题的答案,Cal。
-
首先你需要了解类和对象之间的区别。您正在使用类,就好像它们是对象一样。您需要实例化类并为甲板和手创建对象。 Pythonwise,
cards,因为它们出现在两个类中,是类属性,而不是实例属性
标签: python class oop variables object