Contenidos
Ejemplo completo de uso de métodos de clase
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
class Persona: def __init__(self, nombre, edad): self.nombre = nombre self.edad = edad @classmethod def desde_nombre(cls, nombre): return cls(nombre, 0) @classmethod def vacio(cls): return cls("Desconocido", 0) def __str__(self): return f"Persona(nombre={self.nombre}, edad={self.edad})" # Ejemplos de uso persona1 = Persona("Juan", 30) persona2 = Persona.desde_nombre("Ana") persona3 = Persona.vacio() print(persona1) # Persona(nombre=Juan, edad=30) print(persona2) # Persona(nombre=Ana, edad=0) print(persona3) # Persona(nombre=Desconocido, edad=0) |
Definición de la clase Persona
class Persona:
def __init__(self, nombre, edad):
self.nombre = nombre
self.edad = edad
- Clase
Persona
: Se define una clase llamadaPersona
. - Método
__init__
: Este es el constructor de la clase, el cual se llama cuando se crea una nueva instancia dePersona
. Recibe dos parámetros:nombre
: El nombre de la persona.edad
: La edad de la persona.
- Atributos de instancia: Los parámetros
nombre
yedad
se asignan a los atributos de la instancia (self.nombre
yself.edad
).
Métodos de clase
Los métodos de clase están decorados con @classmethod
, lo que significa que reciben la clase (cls
) como primer argumento en lugar de la instancia (self
).
@classmethod
def desde_nombre(cls, nombre):
return cls(nombre, 0)
- Método
desde_nombre
: Este método permite crear una instancia dePersona
proporcionando solo elnombre
.- Toma
nombre
como parámetro y estableceedad
en 0. - Usa
cls
para llamar al constructor de la clase, creando una instancia con el nombre proporcionado y una edad de 0.
- Toma
@classmethod
def vacio(cls):
return cls("Desconocido", 0)
- Método
vacio
: Este método permite crear una instancia dePersona
sin proporcionar ningún parámetro.- Crea una instancia con el nombre «Desconocido» y la edad 0.
- Nuevamente, usa
cls
para llamar al constructor de la clase.
Representación en String
def __str__(self):
return f"Persona(nombre={self.nombre}, edad={self.edad})"
- Método
__str__
: Este método define cómo se debe representar una instancia dePersona
como una cadena de texto.- Devuelve una cadena formateada que muestra el nombre y la edad de la persona.
Ejemplos de uso
# Ejemplos de uso
persona1 = Persona("Juan", 30)
persona2 = Persona.desde_nombre("Ana")
persona3 = Persona.vacio()
print(persona1) # Persona(nombre=Juan, edad=30)
print(persona2) # Persona(nombre=Ana, edad=0)
print(persona3) # Persona(nombre=Desconocido, edad=0)
- Crear una instancia directamente:
persona1 = Persona("Juan", 30)
: Crea una instancia dePersona
con nombre «Juan» y edad 30.
- Crear una instancia usando el método de clase
desde_nombre
:persona2 = Persona.desde_nombre("Ana")
: Crea una instancia dePersona
con nombre «Ana» y edad 0 usando el método de clase.
- Crear una instancia usando el método de clase
vacio
:persona3 = Persona.vacio()
: Crea una instancia dePersona
con nombre «Desconocido» y edad 0 usando el método de clase.
Salida
Cuando se imprimen estas instancias:
print(persona1) # Persona(nombre=Juan, edad=30)
print(persona2) # Persona(nombre=Ana, edad=0)
print(persona3) # Persona(nombre=Desconocido, edad=0)
Cada llamada a print
invoca el método __str__
de la instancia correspondiente, lo que resulta en la representación de cadena definida en __str__
, mostrando los valores de nombre
y edad
de cada instancia.