我刚刚开始使用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的列表属性。当我尝试使用以下代码
打印列表中特定卡的名称时出现错误 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
任何建议都将不胜感激,谢谢。
答案 0 :(得分:0)
据我所知,您的主要问题是您要将名单附加到testDeck.cards,而不是附加单张卡。列表没有.name()方法,因此您会收到错误。
让我们看一个简化的例子。我们创建了一个简化的basedeck,包含四个项目。
>>> bd = []
>>> bd.append(1)
>>> bd.append(2)
>>> bd.append(3)
>>> bd.append(4)
>>> print(bd)
[1, 2, 3, 4]
然后我们创建一个简化的卡片列表。当我们尝试从basedeck追加切片时,追加函数会将每个切片附加为原子单元:基本上创建一个包含子列表的列表,而不是我想要的那样,列出个别元素。
>>> 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]
希望这有帮助。