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