Module (21%)
Section (21%)

Variables de Clase

Una variable de clase es una propiedad que existe en una sola copia y se almacena fuera de cualquier objeto.

Nota: no existe una variable de instancia si no hay ningún objeto en la clase; existe una variable de clase en una copia, incluso si no hay objetos en la clase.

Las variables de clase se crean de manera diferente. El ejemplo te dirá más:

class ClaseEjemplo: contador = 0 def __init__(self, val = 1): self.__primera = val ClaseEjemplo.contador += 1 objetoEjemplo1 = ClaseEjemplo() objetoEjemplo2 = ClaseEjemplo(2) objetoEjemplo3 = ClaseEjemplo(4) print(objetoEjemplo1.__dict__, objetoEjemplo1.contador) print(objetoEjemplo2.__dict__, objetoEjemplo2.contador) print(objetoEjemplo3.__dict__, objetoEjemplo3.contador)


Observa:

  • Hay una asignación en la primera linea de la definición de clase: establece la variable denominada contador a 0; inicializando la variable dentro de la clase pero fuera de cualquiera de sus métodos hace que la variable sea una variable de clase.
  • El acceder a dicha variable tiene el mismo aspecto que acceder a cualquier atributo de instancia; está en el cuerpo del constructor; como puedes ver, el constructor incrementa la variable en uno; en efecto, la variable cuenta todos los objetos creados.

Ejecutar el código causará el siguiente resultado:

{'_ClaseEjemplo__primera': 1} 3 {'_ClaseEjemplo__primera': 2} 3 {'_ClaseEjemplo__primera': 4} 3

Dos conclusiones importantes provienen del ejemplo:

  • Las variables de clase no se muestran en el diccionario de un objeto __dict__ (esto es natural ya que las variables de clase no son partes de un objeto), pero siempre puedes intentar buscar en la variable del mismo nombre, pero a nivel de clase, te mostraremos esto muy pronto.
  • Una variable de clase siempre presenta el mismo valor en todas las instancias de clase (objetos).