Métodos de clase en Python
Ejemplo completo de uso de métodos de clase
[crayon-6a61c3fcc8112330115863/]
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: - Atributos de instancia: Los parámetros
nombreyedadse asignan a los atributos de la instancia (self.nombreyself.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 dePersonaproporcionando solo elnombre.
@classmethod
def vacio(cls):
return cls("Desconocido", 0)
- Método
vacio: Este método permite crear una instancia dePersonasin proporcionar ningún parámetro.
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 dePersonacomo una cadena de texto.
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:
- Crear una instancia usando el método de clase
desde_nombre: - Crear una instancia usando el método de clase
vacio:
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.