J'ai un script où je fais des trucs magiques pour charger dynamiquement un module, et instancier la première classe trouvée dans le module. Mais je ne peux plus utiliser types.ClassType
en Python 3. Quelle est la bonne façon de le faire maintenant?Qu'est-il arrivé à types.ClassType dans python 3?
12
A
Répondre
14
I figured it out. Il semble que les classes sont de type "type". Voici un exemple de la façon de faire la distinction entre les classes et les autres objets lors de l'exécution.
>>> class C: pass
...
>>> type(C)
<class 'type'>
>>> isinstance(C, type)
True
>>> isinstance('string', type)
False
5
Il a été utilisé pour classic classes. En Python 3, ils sont partis. Je suppose que vous pouvez utiliser quelque chose comme:
issubclass(ClassName, object)
Merci! J'ai essayé d'utiliser 'type (C) is type', qui a fonctionné pour les classes simples, mais pas quand C utilise une métaclasse. 'isinstance (C, type)', comme vous l'avez écrit, renvoie toujours 'True' dans ce cas, cependant. – goodmami