Contenido del Curso
Programación Orientada a Objetos en Python a Fondo
Programación Orientada a Objetos en Python a Fondo
yo
self
es el primer argumento en los métodos, cuyo nombre es acordado por los programadores de Python. Cuando una instancia ejecuta un método, automáticamente se pasa a sí misma como primer argumento. Consideremos como ejemplo la clase User
que creamos anteriormente:
class User: def __init__(self, name, surname, age): # self=bob, name="Bob", surname="Smith", age=11 self.name = name # bob.name = "Bob" (name argument) self.surname = surname # bob.surname = "Smith" (surname argument) self.age = age # bob.age = 11 (age argument) bob = User("Bob", "Smith", 11) print(bob.name, bob.surname, bob.age)
El método mágico __init__
recibe los argumentos self
, name
, surname
y age
. En el ejemplo dado, cuando creamos la instancia bob
, estos argumentos se pasan como valores.
Usemos la función print()
para examinar los argumentos pasados:
class User: def __init__(self, name, surname, age): print("===== INIT ARGUMENTS =====") print("self:", self) print("name:", name) print("surname:", surname) print("age:", age) self.name = name self.surname = surname self.age = age bob = User("Bob", "Smith", 11) print("===== GLOBAL =====") print("bob:", bob) print("bob.name:", bob.name) print("bob.surname:", bob.surname) print("bob.age:", bob.age)
En el ejemplo dado, es evidente que la variable global bob
y el parámetro self
dentro del método __init__
se refieren a la misma instancia. Esto ilustra la convención en Python donde los métodos reciben la instancia como primer argumento, convencionalmente llamado self
.
Siguiendo esta convención, los métodos tienen acceso a los atributos de la instancia y pueden realizar operaciones o acceder a valores específicos de esa instancia en particular.
Nota
En Python, el parámetro
self
sirve como primer argumento en los métodos y representa el objeto instancia que llama al método. Por convención, se utiliza el nombreself
, aunque puede ser cualquier nombre de variable válido. Este parámetro proporciona acceso a los atributos y métodos de la instancia, permitiendo al método interactuar y manipular sus propios datos.
Para una mejor comprensión, vamos a crear una función regular y llamarla init
, que realizará las mismas acciones pero será llamada por separado.
class User: pass def init(instance, arg1, arg2, arg3): instance.name = arg1 instance.surname = arg2 instance.age = arg3 bob = User() init(bob, "Bob", "Smith", 11) print(bob.name, bob.surname, bob.age)
La función init
toma el primer argumento como instancia y luego le asigna los argumentos recibidos. Del mismo modo, __init__
funciona al crear una clase, y self
es un elemento necesario para crear diferentes métodos, que discutiremos más adelante.
¡Gracias por tus comentarios!