gpt4 book ai didi

python - 有没有办法访问 python 中对象列表中的特定属性?

转载 作者:行者123 更新时间:2023-12-01 07:32:45 25 4
gpt4 key购买 nike

好吧,不久前开始学习Python,努力学习一般的OOP,然后他们告诉我写一个二十一点游戏。现在,我为每张卡制作了对象,将所有这些对象放在一个列表中以模拟一副牌。我无法弄清楚如何从该列表中的每一项中干净地返回一个特定属性。

我最初只是尝试打印,但后来我意识到我认为这个东西比实际更聪明,这是一个问题。 Python 是一门很好的语言,而且我确信有工具。我只是还不知道

class Card:
def __init__(self, face, suit, value):
self.face = face
self.suit = suit
self.value = value

ACES = Card("Ace","Spades",10)
TWOS = Card(2,"Spades",2)
THRS = Card(3,"Spades",3)
FOUS = Card(4,"Spades",4)
FIVS = Card(5,"Spades",5)
SIXS = Card(6,"Spades",6)
SEVS = Card(7,"Spades",7)
EIGS = Card(8,"Spades",8)
NINS = Card(9,"Spades",9)
TENS = Card(10,"Spades",10)
JACS = Card("Jack","Spades",10)
QUES = Card("King","Spades",10)
KINS = Card("Queen","Spades",10)

deck = [ACES,TWOS,THRS,FOUS,FIVS,SIXS,SEVS,EIGS,NINS,TENS,JACS,QUES,KINS]

print (deck.face)

事后看来,我应该意识到代码会认为我需要列表本身的属性,而不是列表中的项目,但我被难住了。

最佳答案

In hindsight I should've realised the code would think I demanded an attribute from the list itself, not the items inside

实际上,代码不会“思考”,它只会执行。运行时也不会“思考”,它只是执行提供的代码。但抛开这些细微的概念差异,您的诊断是正确的:deck.facedeck 上查找名为“face”的属性(列出)对象本身。

如果您的问题是“如何打印(或收集或执行任何操作) face 中每张卡的 deck 属性,简单的解决方案是迭代列表:

for card in deck:
print(card.face)

或者如果您想构建 face 的列表值:

faces = [card.face for card in deck]

现在,如果这是面向对象设计的练习,您可能需要重新考虑 list 的使用代表“牌组”对象 - 牌组实际上不是 list .

关于python - 有没有办法访问 python 中对象列表中的特定属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57144471/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com