Python 列出模块中的某些类
我有一个模块M,其中有几个类。我想列出这个模块中所有实例的addToList属性设置为True的类。我试着摆弄varsM和dirM函数,但我真的不知道循环什么以及如何获得该属性的值 当然,我在模块外列出了这个列表,即模块是导入的 下面是我正在思考的模块示例:Python 列出模块中的某些类,python,class,module,Python,Class,Module,我有一个模块M,其中有几个类。我想列出这个模块中所有实例的addToList属性设置为True的类。我试着摆弄varsM和dirM函数,但我真的不知道循环什么以及如何获得该属性的值 当然,我在模块外列出了这个列表,即模块是导入的 下面是我正在思考的模块示例: class A(): def __init__(self): self.addToList = True #more stuff here... class B(): def __init__(sel
class A():
def __init__(self):
self.addToList = True
#more stuff here...
class B():
def __init__(self):
self.addToList = True
class C():
def __init__(self):
self.addToList = False
我还可以创建一个将addToList设置为True的超类,然后使a和B从中继承,如果这样有帮助的话。这应该可以做到:
from types import ClassType
import classes # Your module containing the classes
out = []
# or you can also iterate over just vars(classes).values() as you only need the
# objects not their name.
for k, v in vars(classes).items():
if isinstance(v, ClassType):
if getattr(v, 'addToList', None) or getattr(v(), 'addToList', None):
out.append(v)
print out
#[<class classes.A at 0x0000000002B7CCA8>, <class classes.B at 0x0000000002B7CD68>]
这里有一个实例属性,而不是类属性。@Aश威尼च郝德里,你说得对。不过,我的问题仍然存在。我想我可以把它改成class属性,如果这样可以使事情更简单的话。它可能会的。是的,它是有效的,是的,我只是在值上迭代。谢谢