如何访问列表成员的属性又称AttributeError:“list”对象没有属性“name”

2024-10-02 00:21:35 发布

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

我刚开始使用Python,当我试图访问列表中对象的name属性时,我发现了这个错误。你知道吗

在第一段代码中,我可以打印我的Card类的name属性:

    while nextcard<=53:
        thisCard=Card()
        thisCard=thisCard.init_card(nextcard)
        base_deck.append(thisCard)
        print(base_deck[nextcard].name)
        nextcard+=1

我还有一个名为Deck的类,它有一个名为cards的list属性。当我试图用下面的代码打印列表中特定卡的名称时,我得到了错误

    testDeck=Deck()
    if testDeck.d_count==42:
        testDeck.name="four player 500"
        testDeck.cards=[]
        testDeck.cards.append(base_deck[4:14])
        testDeck.cards.append(base_deck[17:27])
        testDeck.cards.append(base_deck[29:40])
        testDeck.cards.append(base_deck[42:53])
        print(testDeck.cards[2].name)
        nextcard=0

如有任何建议,将不胜感激,谢谢。你知道吗


Tags: 代码name列表base属性错误cardcards
1条回答
网友
1楼 · 发布于 2024-10-02 00:21:35

据我所知,你的主要问题是,你是附加名单testDeck.cards卡,而不是附加单个卡。列表没有.name()方法,因此会出现错误。你知道吗

让我们看一个简单的例子。我们创建了一个包含四个项目的简化底板。你知道吗

>>> bd = []
>>> bd.append(1)
>>> bd.append(2)
>>> bd.append(3)
>>> bd.append(4)
>>> print(bd)
[1, 2, 3, 4]

然后我们创建一个简化的卡片列表。当我们试图从basedeck追加片时,append函数将每个片追加为一个原子单元:基本上创建一个包含子列表的列表,而不是像我想的那样,一个包含单个元素的列表。你知道吗

>>> cards = []
>>> cards.append(bd[0:2])
>>> cards.append(bd[2:4])
>>> print(cards)
[[1, 2], [3, 4]]

要将切片作为单个元素添加到列表中,可以使用.extend()方法。你知道吗

In [14]: cards2 = []
    ...: cards2.extend(bd[0:2])
    ...: cards2.extend(bd[2:4])
    ...: print(cards2)
    ...:
[1, 2, 3, 4]

希望这有帮助。你知道吗

相关问题 更多 >

    热门问题