Por qué no puedo acceder a la instancia .__ atributo class__ en Python?
-
26-09-2019 - |
Pregunta
Soy nuevo en Python, y sé que debo estar perdiendo algo bastante simple, pero ¿por qué no esta muy, muy simple código de trabajo?
class myClass:
pass
testObject = myClass
print testObject.__class__
Me sale el siguiente error:
AttributeError: class myClass has no attribute '__class__'
no todos los objetos de Python tiene un atributo __class__
?
Solución
creo que me di cuenta de mi error. Pensé que el código testObject = myClass
fue la creación de una nueva instancia / objeto de la clase, pero en realidad fue la asignación de una referencia a la clase misma. He cambiado el código para:
class myClass:
pass
testObject = myClass()
print testObject.__class__
y ahora funciona como esperaba
Otros consejos
La mayoría, pero no todos, los objetos en Python tiene un atributo __class__
. Generalmente, usted puede acceder a ella para determinar la clase de un objeto.
Se puede conseguir la clase de cualquier objeto llamando type
en él.
>>> class myClass:
... pass
...
>>> testObject = myClass
>>> type(testObject)
<type 'classobj'>
clases de estilo antiguo no tiene un atributo __class__
.
class myClass(object):
pass