列出模块中的某些类

时间:2014-04-09 18:00:09

标签: python class module

我有一个模块M,里面有几个类。我想列出此模块中所有类的实例,其中addToList属性设置为True。我尝试摆弄vars(M)dir(M)函数,但我真的不知道要循环什么以及如何获取此属性的值......

当然,我正在模块之外创建这个列表,e.i。模块已导入。

以下是我正在考虑的模块示例:

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的超类,然后让AB继承它,如果这样会有所帮助。

1 个答案:

答案 0 :(得分:0)

这应该这样做:

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>]