我可以用Python中的变量引用类实例吗?
我有一个类实例列表,我想在运行时使用变量集检查列表中是否有特定的实例我可以用Python中的变量引用类实例吗?,python,Python,我有一个类实例列表,我想在运行时使用变量集检查列表中是否有特定的实例 class Animal(): def __init__(self, name): self.name = name cat = Animal('cat') dog = Animal('dog') fish = Animal('fish') animals = [cat, dog, fish] assert dog in animals # True target = 'dog' assert
class Animal():
def __init__(self, name):
self.name = name
cat = Animal('cat')
dog = Animal('dog')
fish = Animal('fish')
animals = [cat, dog, fish]
assert dog in animals # True
target = 'dog'
assert target in animals # Error
这可以做到吗?
dog
是动物类的一个实例
您可以尝试循环遍历每个类,获得.name
并进行如下比较:
class Animal():
定义初始化(self,name):
self.name=名称
猫=动物(“猫”)
狗=动物(“狗”)
鱼=动物(“鱼”)
动物=[猫、狗、鱼]
在动物身上断言狗是真的
目标=‘狗’
对于动物中的_类obj:
打印(目标==类对象名称)
可能类似于在地图中断言目标(lambda animal:animal.name,animals)
?目标='dog'
当前与动物
实例dog
完全没有连接。如果您适当地实现了\uuuu eq\uuuu
,您可以在动物中执行例如动物(目标)
,或者您可以创建一个.name
的列表/集合并将其签入。当然,您可以使用变量引用类实例。在Python中,可以分配给变量的所有内容都是一个类实例,事实上,不可能做任何其他事情。您的问题是,使用target=“dog”
时,您引用的是str
的实例,而不是Animal
的实例。您的意思是target=dog
?您可以在类中添加def\uu eq\uuuuuu(self,other):返回self.name==other
,但是很难猜出你到底想要什么。另一个类似的选择是按名称将动物存储在目录中,而不是一个列表:动物={animal.name:animal for animal in animals}
。