Método constructor (__init__)
Parte de la sección Object Oriented Programming del Journey de Python de Coddy — lección 7 de 64.
El método __init__ es un método especial que se ejecuta automáticamente cuando creas un objeto nuevo. Inicializa los atributos del objeto.
Aquí hay un ejemplo de una clase con un constructor:
class Dog:
def __init__(self, name, breed):
self.name = name
self.breed = breedEl método __init__ toma parámetros y los asigna a atributos de instancia usando self.
Crea objetos usando el constructor:
rex = Dog("Rex", "German Shepherd")
buddy = Dog("Buddy", "Golden Retriever")Cuando llamas a Dog("Rex", "German Shepherd"), Python llama automáticamente a __init__ y pasa los argumentos.
Accede a los atributos que fueron establecidos por el constructor:
print(rex.name)
print(rex.breed)
print(buddy.name)
print(buddy.breed)Salida:
Rex
German Shepherd
Buddy
Golden RetrieverTambién puedes tener un constructor con valores por defecto:
class Cat:
def __init__(self, name, age=1):
self.name = name
self.age = age
# Crear gatos
fluffy = Cat("Fluffy", 3)
whiskers = Cat("Whiskers") # la edad por defecto es 1
print(f"{fluffy.name} is {fluffy.age} years old")
print(f"{whiskers.name} is {whiskers.age} years old")Salida:
Fluffy is 3 years old
Whiskers is 1 years oldPunto clave: El método __init__ asegura que cada objeto se configure correctamente con sus datos iniciales al ser creado. Te evita tener que establecer manualmente los atributos después de la creación del objeto.
Desafío
FácilSe te proporcionan archivos Python (book.py y driver.py) para implementar un sistema de gestión de libros. En este desafío, definirás una clase Book en un archivo que será importada y utilizada en otro.
Tu tarea es:
- Completa la clase
Bookenbook.pycon un método__init__que inicialice los atributostitle,authorypages - El archivo
driver.pyimportará y utilizará tu claseBookpara crear un objeto de libro para"Harry Potter" by "J.K. Rowling" with 400 pages
Sigue los comentarios TODO detallados en el book.py .
Hoja de referencia
El método __init__ es un constructor que se ejecuta automáticamente al crear un nuevo objeto para inicializar sus atributos:
class Dog:
def __init__(self, name, breed):
self.name = name
self.breed = breedCrea objetos llamando a la clase con argumentos:
rex = Dog("Rex", "German Shepherd")
print(rex.name) # Rex
print(rex.breed) # German ShepherdLos constructores pueden tener valores de parámetros por defecto:
class Cat:
def __init__(self, name, age=1):
self.name = name
self.age = age
fluffy = Cat("Fluffy", 3)
whiskers = Cat("Whiskers") # age por defecto es 1Pruébalo tú mismo
# TODO: Importar la clase Book desde book.py
# Usa este formato: from book import Book
# TODO: Crear un objeto de libro llamado 'my_book' con los siguientes valores:
# - título: "Harry Potter"
# - autor: "J.K. Rowling"
# - páginas: 400
# Ejemplo: my_book = Book("Title", "Author", pages)
# Imprimir los detalles del libro
# TODO: Asegúrate de que my_book esté definido correctamente antes de que se ejecute esta línea
print(f"'{my_book.title}' by {my_book.author}, {my_book.pages} pages")Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.
Todas las lecciones de Object Oriented Programming
1Fundamentos de la POO
Archivos externosIntroducción a la POOClases vs ObjetosEl parámetro selfMétodosAtributosMétodo constructor (__init__)Resumen - Calculadora simple4Herencia
Herencia básicaLa función super()Sobrescritura de métodosHerencia múltipleOrden de resolución de métodosResumen - Jerarquía de empleados7Métodos especiales
Introducción a los métodos mágicosSobrecarga de operadoresMétodos mágicos de contenedoresRepaso - Lista personalizada10Patrones de diseño Parte 1
Introducción a los patrones de diseñoPatrón SingletonPatrón FactoryPatrón ObserverPatrón Strategy2Decoradores
Introducción a los decoradoresDecorador propertyDecorador de métodos estáticosDecorador de métodos de clase5Polimorfismo
Sobreescritura de métodos revisitadaDuck TypingClases y métodos abstractosDiseño de interfacesResumen - Calculadora de figuras8Conceptos avanzados de POO
Composición vs. HerenciaMixinsMétodos estáticos y de claseDecoradores de claseGestores de contexto11Patrones de diseño, parte 2
Patrón CommandPatrón AdapterPatrón DecoratorPatrón Template MethodPatrón StatePatrón Composite3Propiedades de clase
Variables de instancia vs de claseDecoradores de propiedadesAtributos privadosResumen - Gestor de cuentas bancarias