2016-11-07 3 views
0

Mit dem folgenden Setup der beiden Dateien a.pyÜberprüfen Sie, ob der Klasse B Unterklasse der Klasse A, die in dem gleichen Modul

#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) 

und

#b.py 
from a import A 

class B(A): 
    pass 

befindet Wie kann ich in der Datei a.py wenn eine in b.py gefundene Klasse eine Unterklasse von A ist.

Der Versuch, den Sie in a.py sehen, führt dazu, dass zwei False gedruckt werden. Seit B ist eine Unterklasse von A Wie überprüfe ich es richtig?

Antwort

2

Ich habe folgende Lösung gefunden:

#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) 

aber noch habe ich keine Ahnung, warum es funktioniert (während der Lösung nicht)

+0

Upvote für Einfallsreichtum –

Verwandte Themen