python-3.x - 输入类名并从列表中删除该类的对象
问题描述
我想使用变量“类名”从列表中删除一个对象
list = [A, A, B] #objects inside a list
classname = input() . #x = A
list.remove(classname) #the problem is that classname is a string
#and the list has no strings
解决方案
一些对象知道它们的名字。如果A
andB
是类、函数、方法、描述符或生成器实例,您可以使用definition.__name__
它们来确定它们的名称。
class A:
pass
class B:
pass
l = [A, B, A, B]
remove = "A"
print([x for x in l if x.__name__ != remove])
# [<class '__main__.B'>, <class '__main__.B'>]