为什么结果总是无?

时间:2018-09-19 05:53:39

标签: python python-3.x

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]'

3 个答案:

答案 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()