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

How do I create a new instance of a class using an old variable name in Python?

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() 函数创建一个甲板对象的全新实例,并使用旧的 game_deck 引用来引用这个新对象。但是,发生的情况是 python 只是在 game_deck.

引用的对象的旧实例上再次调用 __init__() 函数

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

甲板class看起来像这样

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

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

由于您使用 global,您确实访问了全局 game_deck 变量,因此一旦您使用 game_deck = deck(),您就在分配 return 值 deck() 到变量。与 deck() return 原始 game_deck 值不同,这会更改变量。

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