如何使用 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__
。
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__
。