Self Python
self python que es.En la programación orientada a objetos, cada vez que definimos métodos para una clase, usamos self
como primer parámetro en cada caso. Veamos la definición de una clase llamada Me
.
metodo self python
class Me: def __init__(self, nombre, laEdad): self.nombre = nombre self.laEdad = laEdad def info(self): print(f"Mi nombre es {self.nombre}. Yo soy {self.laEdad} Años.")
Python Self
En este caso, todos los métodos, incluidos los init
, tienen el primer parámetro como self
.La palabra clave self
se utiliza para representar una instancia (objeto) de la clase dada. En este caso,
¿Por qué se define explícitamente cada vez?
Incluso cuando entendemos el uso de self
, todavía puede parecer extraño, especialmente para los programadores que provienen de otros lenguajes, que self
se pase como un parámetro explícitamente cada vez que definimos un método.
para que sirve self en python
class Punto(object): def __init__(self,x = 0,y = 0): self.x = x self.y = y def distancia(self): """Encontrar distancia desde el origen""" return (self.x**2 + self.y**2) ** 0.5
Punto(6,8).distancia() # 10.0
Self se puede evitar
A estas alturas ya tiene claro que el objeto (instancia) en sí se pasa como el primer argumento, automáticamente. Este comportamiento implícito se puede evitar al crear un método static
.
que significa self en python
class A(object): @staticmethod def stat_meth(): print("Mira que no se pasó ningún self")
Aquí, code>@staticmethod</code es un decorador de funciones que hace que stat_meth()
estático.
A().stat_meth() # Mira que no se pasó ningún self
Self Está aquí para quedarse
El Self
explícito no es exclusivo de Python. No hay una declaración de variable explícita en Python. Entran en acción en la primera asignación. El uso de self facilita la distinción entre atributos (y métodos) de instancia de variables locales
class Punto(object): def __new__(cls,*args,**kwargs): print(cls) print(args) print(kwargs) # crear nuestro objeto y devolverlo obj = super().__new__(cls) return obj def __init__(self,x = 0,y = 0): self.x = x self.y = y