Saltar a contenido

Miembros de Clase (atributos y métodos de clase)

Los atributos y métodos de clase son aquellos que aplican a la totalidad de las instancias (objetos) que se crean.

Por ejemplo, si tenemos una clase GatoDomestico, cada instancia (cada objeto gato que se cree), podrá tener su atributo nombre específico, su edad, su comportamiento, etc. Pero todos ellos serán de la especie Felis Catus, por lo tanto, especie será un atributo de clase, en lugar de ser un atributo de instancia.

A diferencia de los miembros de instancia, en lugar de usar solamente self, se utiliza cls para hacer referencia específica a la clase. Aunque con self también se puede acceder desde una instancia a un atributo de clase.

# atributos y métodos de clases
class Persona:
    especie = 'Homo Sapiens' # atributo de clase (aplica a todos los objetos)

    def __init__(self, nombre, edad) -> None:
        self.nombre = nombre # atributos de instancia 
        self.edad = edad

    def __str__(self):
        return f'Especie:{self.especie} Nombre:{self.nombre} Edad:{self.edad}'

    @classmethod
    def desde_datos(cls, persona_datos): #constructor alternativo
        nombre, edad = persona_datos.split('-')
        edad = int(edad)
        return cls(nombre, edad)

    @classmethod
    def set_especie(cls, nombre) -> None:
        cls.especie = nombre

alguien = Persona('Ana', 22)
print(alguien)
otra_persona = Persona('Juan', 35)
print(otra_persona)
dato1 = 'Luis-61'
otra_persona_mas = Persona.desde_datos(dato1)
print(otra_persona_mas)
Persona.set_especie('Homo Neanderthalensis')
print(alguien)
print(otra_persona)