El parámetro self
Parte de la sección Object Oriented Programming 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. Permite acceder y modificar los atributos del objeto actual.
Aquí hay 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 debe ser siempre 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 car 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 el parámetro self.
Esto es lo que sucede 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 utilizar.
Punto clave: Incluye siempre self como el primer parámetro en las definiciones de métodos, pero nunca lo pases al llamar a los métodos; Python maneja esto automáticamente.
Desafío
FácilCompleta la clase Car en car.py agregando un método llamado display_info que utilice el parámetro self para imprimir el año, la marca y el modelo del coche en el formato:
"This car is a [year] [make] [model]".
car.py: Contiene la definición de la claseCardonde agregarás el métododisplay_infodriver.py: Archivo de ejecución principal que importa y utiliza 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 driver.
Hoja de referencia
El parámetro self se refiere a la instancia de una clase dentro de los métodos y permite acceder y modificar los atributos del objeto actual.
self siempre debe ser el primer parámetro en las definiciones de los métodos:
class Car:
def honk(self):
print("Beep beep!")
def describe(self):
print(f"I am a {self.color} {self.model}")Crea un objeto y añade atributos:
my_car = Car()
my_car.color = "Red"
my_car.model = "Sedan"Llama a los métodos (Python pasa automáticamente el objeto como self):
my_car.honk() # ¡Beep beep!
my_car.describe() # Soy un Sedan RojoPunto clave: Incluye siempre self como el primer parámetro en las definiciones de los métodos, pero nunca lo pases al llamar a los métodos.
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 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