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__?

¿Fue útil?

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
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top