检查B类是否是位于同一模块中的A类的子类

时间:2016-11-07 09:39:43

标签: python oop subclass

通过以下两个文件a.py

的设置
#File a.py
import imp
import inspect

class A(object):
    pass

if __name__ == "__main__":
    mod = imp.load_source("B", "b.py")
    for _, c in inspect.getmembers(mod, inspect.isclass):
        print issubclass(c, A) 

#b.py
from a import A

class B(A):
    pass

如果在a.py中找到的班级是b.py的子类,我如何签入档案A

您在a.py中看到的尝试会导致打印两个False。由于BA的子类,我如何正确检查它?

1 个答案:

答案 0 :(得分:2)

我找到了以下解决方案:

#File a.py
import imp
import inspect

class A(object):
    pass

if __name__ == "__main__":
    mod = imp.load_source("B", "b.py")

    #self import
    import a

    for _, c in inspect.getmembers(mod, inspect.isclass):
        print issubclass(c, a.A)

但我仍然不知道它为什么会起作用(而你的解决方案却没有)