Module (22%)
Section (23%)

Variables de Clase: continuación

Hemos dicho antes que las variables de clase existen incluso cuando no se creó ninguna instancia de clase (objeto).

Ahora aprovecharemos la oportunidad para mostrarte la diferencia entre estas dos variables __dict__, la de la clase y la del objeto.

Observa el código en el editor. La prueba está ahí.

Echemos un vistazo más de cerca:

  • Definimos una clase llamada ClaseEjemplo.
  • La clase define una variable de clase llamada varia.
  • El constructor de la clase establece la variable con el valor del parámetro.
  • Nombrar la variable es el aspecto más importante del ejemplo porque:
    • El cambiar la asignación a self.varia = val crearía una variable de instancia con el mismo nombre que la clase.
    • El cambiar la asignación a varia = val operaría en la variable local de un método; (te recomendamos probar los dos casos anteriores; esto te facilitará recordar la diferencia).
  • La primera línea del código fuera de la clase imprime el valor del atributo ClaseEjemplo.varia. Nota: utilizamos el valor antes de instanciar el primer objeto de la clase.

Ejecuta el código en el editor y verifica su salida.

Como puedes ver __dict__ contiene muchos más datos que la contraparte de su objeto. La mayoría de ellos son inútiles ahora - el que queremos que verifiques cuidadosamente muestra el valor actual de varia.

Nota que el __dict__ del objeto está vacío - el objeto no tiene variables de instancia.



Code

class ClaseEjemplo:
varia = 1
def __init__(self, val):
ClaseEjemplo.varia = val

print(ClaseEjemplo.__dict__)
objetoEjemplo = ClaseEjemplo(2)

print(ClaseEjemplo.__dict__)
print(objetoEjemplo.__dict__)
{{ dockerServerErrorMsg }} ×
{{ errorMsg }} ×
{{ successMsg }} ×