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).