如何在Python中使用旧的变量名创建类的新实例?

时间:2015-02-18 07:30:06

标签: python instantiation

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*******"

1 个答案:

答案 0 :(得分:1)

game_deck 是一个名字。通过执行game_deck = something,您可以为变量分配内容。如果某些内容与game_deck之前引用的内容不同,那么您已更改了变量。

由于您使用global,因此您可以访问全局game_deck变量,因此只要您game_deck = deck(),就会将deck()的返回值分配给变量。与deck()不同,返回原始game_deck值,这会更改变量。

如果deck是一种类型,那么deck()将创建该类型的新对象,并在新对象上调用初始化器 。这无法再次在旧对象上调用__init__

相关问题