Estoy un poco confundido acerca de los tipos y clases en Python. Por ej. la siguiente conversación REPL me confunde:Tipos y clases en Python
>>> class A: pass
...
>>> a = A()
>>> type(a)
<type 'instance'>
>>> a.__class__
<class __main__.A at 0xb770756c>
>>> type([])
<type 'list'>
>>> [].__class__
<type 'list'>
>>> type(list)
<type 'type'>
>>> list.__class__
<type 'type'>
>>> type(A)
<type 'classobj'>
>>> A.__class__
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AttributeError: class A has no attribute '__class__'
- ¿Por qué el tipo y la clase de cosas incorporadas (por ejemplo, la lista aquí) lo mismo pero diferente para el usuario clases/tipos?
- ¿No es cada clase una instancia de alguna otra clase (como Clase en Java)? ¿Por qué no
__class__
para las clases definidas por el usuario?
Cualquier explicación/lectura adicional que pueda aclarar este comportamiento sería muy apreciada. TIA.
Debe definir sus clases con 'clase A (objeto)'. Entonces obtendrás '' para 'type (a)'. –