我有一个叫@find_me
的装饰师。我想找到所有用它装饰的类
或者,我有一个名为FindMe
的类,我想找到它的所有子类
为什么??因为我想在它们被import
-ed之前对这些类做一些事情
所以我读了关于__subclasses()__
和关于查找装饰器的内容。
我发现的解决方案的问题是,必须在代码运行之前import
-ed类
换句话说,如果我有:
${proj_root}/some_path/FindMe.py
aclass FindMe(object):
中${proj_root}/some_other_path/NeedsToBeFound.py
中,a class NeedsToBeFound(FindMe):
${proj_root}/yet_another_path/some_module.py
some_module.py
看起来像:import ... FindMe
...
subclasses_of_FindMe = FindMe.__subclasses()__
那么预期的类NeedsToBeFound
将不会出现在结果中(假设在过程中的某个地方没有import
)
因此,我想我正在寻找一种方法,对所有python类(位于^{
怎样做更简单:查找装饰器还是查找子类?我该怎么做呢
提前谢谢
好的,我想出了一个办法:
现在调用
A().foo({some_different_proj_home_dir_2})
似乎有效:)您是否考虑过将“希望在导入之前对其执行某些操作”的类/模块放入一个公共包并使用
__init__.py
?这就是这个文件的实际用途。;)如果所有包都在一个模块中,您也可以将初始值设定项代码放入该模块中(在任何def之外)
另见例如
相关问题 更多 >
编程相关推荐