import CardDeck
from CardDeck import player
from CardDeck import deck
from CardDeck import hand
game_deck=deck()
def create_new_deck():
global game_deck
game_deck=deck()
game_deck.shuffle(100)
print "Creating new Deck...."
我希望create_new_deck()
函数创建一个全新的deck对象实例,并使用旧的game_deck
引用来引用这个新对象。然而,发生的事情是python只是在__init__()
引用的对象的旧实例上再次调用game_deck
函数。
如何在Python中使用旧的变量名创建类的新实例?
甲板类看起来像这样
class deck(object):
cardList=[]
#creates 52 card deck
def __init__(self):
print "*******creating new deck*******"
for i in range(1,14):
self.cardList.append(card("spade",i))
print "*******creating spades*******"
for i in range(1,14):
self.cardList.append(card("heart",i))
print "*******creating hearts*******"
for i in range(1,14):
self.cardList.append(card("diamond",i))
print "*******creating diamonds*******"
for i in range(1,14):
self.cardList.append(card("club",i))
print "*******creating clubs*******"
答案 0 :(得分:1)
game_deck
是一个名字。通过执行game_deck = something
,您可以为变量分配内容。如果某些内容与game_deck
之前引用的内容不同,那么您已更改了变量。
由于您使用global
,因此您可以访问全局game_deck
变量,因此只要您game_deck = deck()
,就会将deck()
的返回值分配给变量。与deck()
不同,返回原始game_deck
值,这会更改变量。
如果deck
是一种类型,那么deck()
将创建该类型的新对象,并在新对象上调用初始化器 。这无法再次在旧对象上调用__init__
。