El parámetro self
Parte de la sección Programación orientada a objetos del Journey de Python de Coddy. Lección 4 de 64.
El parámetro self se refiere a la instancia de una clase dentro de los métodos. Te permite acceder a los atributos del objeto actual y modificarlos.
Aquí tienes un ejemplo de una clase con métodos que usan self:
class Car:
def honk(self):
print("Beep beep!")
def describe(self):
print(f"I am a {self.color} {self.model}")El parámetro self siempre debe ser el primer parámetro en las definiciones de métodos. Le indica al método qué objeto específico se está utilizando.
Crea un objeto de automóvil y añade atributos:
my_car = Car()
my_car.color = "Red"
my_car.model = "Sedan"Ahora llama a los métodos:
my_car.honk()
my_car.describe()Salida:
Beep beep!
I am a Red SedanObserva que, al llamar a my_car.describe(), no pasas nada para self: Python pasa automáticamente my_car como parámetro self.
Esto es lo que ocurre entre bastidores:
# Cuando escribes esto:
my_car.describe()
# Python en realidad hace esto:
Car.describe(my_car)El parámetro self permite que cada objeto acceda a sus propios datos. Sin self, los métodos no sabrían qué atributos de objeto usar.
Punto clave: Incluye siempre self como primer parámetro en las definiciones de métodos, pero nunca lo pases al llamar a métodos: Python se encarga de esto automáticamente.
Desafío
FácilCompleta la clase Car en car.py añadiendo un método llamado display_info que use el parámetro self para imprimir el año, la marca y el modelo del auto con el formato:
"This car is a [year] [make] [model]".
car.py: contiene la definición de la claseCar, donde añadirás el métododisplay_infodriver.py: archivo principal de ejecución que importa y usa la claseCar
El archivo driver.py importará tu clase Car y creará instancias para probar tu implementación. Asegúrate de que tu método funcione correctamente cuando se llame desde el archivo controlador.
Pruébalo tú mismo
from car import Car
# Prueba tu código
my_car = Car()
my_car.year = 2020
my_car.make = "Toyota"
my_car.model = "Corolla"
my_car.display_info() # Debería imprimir: This car is a 2020 Toyota CorollaEsta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.
Todas las lecciones de Programación orientada a objetos
1Fundamentos de la POO
Introducción a la POOArchivos externosClases vs. objetosEl parámetro selfMétodosAtributosMétodo constructor (__init__)Repaso: calculadora sencilla4Herencia
Herencia básicaLa función super()Sobrescritura de métodosHerencia múltipleOrden de resolución de métodosRepaso: 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 de propiedadDecorador de método estáticoDecorador de método de clase5Polimorfismo
Repaso de la sobrescritura de métodosTipado patoClases y métodos abstractosDiseño de interfacesRepaso: calculadora de formas8Conceptos avanzados de POO
Composición frente a 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. variables de claseDecoradores de propiedadesAtributos privadosRepaso: gestor de cuentas bancariasPractica por tu cuenta: Compilador de Python online