0
class Enemy:
def __init__(self,name,health):
self.name=name
self.health=health
wolf=Enemy('wolf',100)
imp=Enemy('imp',70)
orc=Enemy('orc',130)
enemyList=[wolf,imp,orc]
while 1:
enemyNumber=int(input("How many enemies are there? "))
if enemyNumber in range(1,4):
break
else:
print('Wrong number')
if enemyNumber<=2:
del enemyList[2]
if enemyNumber==1:
del enemyList[1]
基本上我现在想的是能够以这样说:如何获得属性值的列表从类实例列表
attackTarget=None
while not attackTarget in enemyList:
attackTarget=input('Which enemy do you want to attack? ')
if not attackTarget in enemyList:
wrongChoice()
的问题是,我不有敌人名字的列表,但实例本身。我知道我可以喜欢的东西得到它:
enemyNameList=[]
for i in range (enemyNumber):
enemyNameList.append(enemyList[i].name)
,但不是有可以在while和if语句中使用,而无需创建一个全新的永久列表中选择一个更简单的方法?喜欢的东西enemyList.name
谢谢,那正是我一直在寻找的。如果我可能会有一个小小的问题:我注意到你在小括号内写了'敌人',并且用较低和较高的字体尝试过它,它工作正常。那么这是如何发生的呢?代码中没有任何地方提到小写字母,我认为这些东西都是区分大小写的。如果我尝试类似'goblin = enemy('goblin',150)'这样的话'NameError:name'enemy''not defined'。 – user3874806
@ user3874806:列表理解将其定义为一个新变量。有关示例,请参阅[Python教程](https://docs.python.org/2/tutorial/datastructures.html#list-comprehensions),您可以通过谷歌“Python列表理解”获取更多信息。 – BrenBarn