2009-02-09 15 views
12

Tengo un script donde hago algunas cosas mágicas para cargar dinámicamente un módulo y crear una instancia de la primera clase que se encuentra en el módulo. Pero ya no puedo usar types.ClassType en Python 3. ¿Cuál es la forma correcta de hacer esto ahora?¿Qué pasó con types.ClassType en python 3?

Respuesta

14

lo he descubierto. Parece que las clases son de tipo "tipo". Aquí hay un ejemplo de cómo distinguir entre clases y otros objetos en tiempo de ejecución.

>>> class C: pass 
... 
>>> type(C) 
<class 'type'> 
>>> isinstance(C, type) 
True 
>>> isinstance('string', type) 
False 
+0

¡Gracias! Intenté usar 'type (C) is type', que funcionaba para clases simples, pero no cuando C usa una metaclase. 'isinstance (C, type)', como escribió, todavía devuelve 'True' en ese caso, sin embargo. – goodmami

5

Se usó para classic classes. En Python 3 se han ido. supongo que se podría utilizar algo como:

issubclass(ClassName, object)