Clases
Los Objetos son instancias concretas del molde de una Clase.
class Humano:
# Un atributo de clase es compartido por todas las instancias de esta clase
especie = "H. sapiens"
# Constructor basico
def __init__(self, nombre):
# Asigna el argumento al atributo nombre de la instancia
self.nombre = nombre
# Un metodo de instancia. Todos los metodos toman self como primer argumento
def decir(self, msg):
return f"{self.nombre}: {msg}"
# Un metodo de clase es compartido a través de todas las instancias
# Son llamados con la clase como primer argumento
@classmethod # decorador
def get_especie(cls):
return cls.especie
# Un metodo estatico es llamado sin la clase o instancia como referencia
@staticmethod # decorador
def roncar():
return "*roncar*"
# Instancia una clase
i = Humano(nombre="Ian")
print(i.decir("hi")) # imprime "Ian: hi"
j = Humano("Joel")
print(j.decir("hello")) #imprime "Joel: hello"
# Llama nuestro método de clase
i.get_especie() #=> "H. sapiens"
# Cambia los atributos compartidos
Humano.especie = "H. neanderthalensis"
i.get_especie() #=> "H. neanderthalensis"
j.get_especie() #=> "H. neanderthalensis"
# Llama al método estático
Humano.roncar() #=> "*roncar*"