我有一个模块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的超类,然后让A
和B
继承它,如果这样会有所帮助。
答案 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>]