Python 列出模块中的某些类

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

我有一个模块M,其中有几个类。我想列出这个模块中所有实例的addToList属性设置为True的类。我试着摆弄varsM和dirM函数,但我真的不知道循环什么以及如何获得该属性的值

当然,我在模块外列出了这个列表,即模块是导入的

下面是我正在思考的模块示例:

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属性,如果这样可以使事情更简单的话。它可能会的。是的,它是有效的,是的,我只是在值上迭代。谢谢