首页 > 解决方案 > 为什么结果总是无?

问题描述

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 (self,starting_cards = None):' 更改为 'def init (self,starting_cards = []):' 它可以给出 '[1,2,3,4]'

标签: pythonpython-3.x

解决方案


那是因为你总是在函数中返回新Deck实例。get_deck()您应该将Deck实例作为Player.


推荐阅读