Ich habe ein Skript, in dem ich einige magische Sachen mache, um ein Modul dynamisch zu laden, und die erste im Modul gefundene Klasse instanziiere. Aber ich kann types.ClassType
nicht mehr in Python 3 verwenden. Was ist der richtige Weg, dies jetzt zu tun?Was ist mit types.ClassType in Python 3 passiert?
12
A
Antwort
14
ich es herausgefunden. Es scheint, dass Klassen vom Typ "Typ" sind. Hier sehen Sie ein Beispiel für die Unterscheidung zwischen Klassen und anderen Objekten zur Laufzeit.
>>> class C: pass
...
>>> type(C)
<class 'type'>
>>> isinstance(C, type)
True
>>> isinstance('string', type)
False
5
Es wurde für classic classes verwendet. In Python 3 sind sie weg. Ich nehme an, Sie so etwas wie verwenden:
issubclass(ClassName, object)
Danke! Ich habe versucht, 'type (C) is type' zu verwenden, was für einfache Klassen funktioniert, aber nicht, wenn C eine Metaklasse verwendet. 'isinstance (C, type)', wie Sie geschrieben haben, gibt in diesem Fall jedoch immer 'True' zurück. – goodmami