为什么结果总是没有?

2024-05-18 11:06:11 发布

您现在位置:Python中文网/ 问答频道 /正文

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],为什么?你知道吗

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


Tags: nameselfnonenewgetreturnifobject
3条回答

这是因为您总是在get_deck()函数中返回新的Deck实例。 您应该将Deck实例作为Player的成员变量。你知道吗

第二个阿兰菲的评论。您的get_deck函数返回一个牌组,因此调用a.get_deck.add_cards(b)将首先返回牌组,并将b牌组添加到此牌组,但此牌组不会存储在任何位置。你知道吗

你能做到的 xyqrz = a.get_deck()然后xyqrz.add_cards(b)并调用xyqrz.get_cards()。你知道吗

好像你从来没有储存过一副牌。每次调用getDeck时,它看起来都在创建一个新的deck对象。你知道吗

相关问题 更多 >