2016-11-07 6 views
0

С следующей установки двух файлов a.pyПроверьте класс B является подклассом класса A, который находится в том же модуле

#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. Поскольку B является подклассом A, как я могу его правильно проверить?

ответ

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) 

, но до сих пор я не имею ни малейшего представления, почему это работает (в то время как ваше решение не делает)

+0

Upvote для изобретательности –

 Смежные вопросы

  • Нет связанных вопросов^_^