Python 为什么结果总是没有?

Python 为什么结果总是没有?,python,python-3.x,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_

如果我输入:

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()
它只返回
[]
,但应该是
[1,2,3,4]
,为什么

但如果我改变 'definit(自启动卡=无):' 到 'definit(自我,起始卡=[]):'
它可以给出“[1,2,3,4]”

这是因为您总是在
get_Deck()
函数中返回新的
Deck
实例。
您应该将
牌组
实例作为
玩家
的成员变量

似乎您从未存储过玩家牌组。每次调用getDeck时,它看起来都在创建一个新的deck对象

第二个阿兰菲的评论。您的
get\u-deck
函数返回一个牌组,因此调用
a.get\u-deck.add\u-cards(b)
将首先返回一个牌组,然后将
b
牌组添加到此牌组,但此牌组不存储在任何位置

你可以
xyqrz=a.获取卡片组()
然后
xyqrz.添加卡片(b)
并调用
xyqrz.get\u卡片()

仔细查看您的
get_deck
函数。
a.get_deck.add_cards(b)
a.get_deck()。add_cards(b)
[]
是一个空列表,而不是旁注上的
None
。。。你有很多
None
检查。。。如果
没有,为什么不在
\uuuu init\uuuuu
中检查一次
,如果没有,则将
自我设置为空列表
[]
。。。那么,在其他实例方法中就不需要担心它了。但是如果我将“def uu init uu u u;(self,starting u cards=None)”更改为“def uu init _;(self,starting u cards=[])”。它起作用了
a = Player('a')
b = [1,2,3,4]
a.get_deck.add_cards(b)
a.get_deck.get_cards