class Deck(object):
def __init__(self,starting_cards = None):
self._cards = starting_cards
def get_cards(self):
if self._cards==None:
return []
else:
return self._cards
def add_cards(self,new_cards):
if self._cards == None:
self._cards = []
self._cards.extend(new_cards)
else:
self._cards.extend(new_cards)
class Player(object):
def __init__(self,name):
self._name= name
def get_deck(self):
return Deck()
所以,如果我输入:
a = Player('a')
b = [1,2,3,4]
a.get_deck.add_cards(b)
a.get_deck.get_cards
它只是返回[]
,但是应该是[1,2,3,4]
,为什么?
但是如果我改变 'def init (自我,starting_cards =无):' 至 'def init (self,starting_cards = []):' 它可以给出'[1,2,3,4]'
答案 0 :(得分:1)
那是因为您总是在Deck
函数中返回新的get_deck()
实例。
您应该将Deck
实例作为Player
的成员变量。
答案 1 :(得分:0)
似乎您从未存储过玩家套牌。每次调用getDeck时,它似乎都在创建一个新的deck对象。
答案 2 :(得分:0)
亚兰·费伊的第二条评论。您的get_deck
函数将返回一个卡片组,因此调用a.get_deck.add_cards(b)
将首先返回一个卡片组,并向该卡片组中添加b
张卡片,但是此卡片组不会存储在任何地方。
你可以做
先xyqrz = a.get_deck()
,然后xyqrz.add_cards(b)
,然后呼叫xyqrz.get_cards()
。