self
En Python, dentro de una clase, self
es la referencia a la instancia actual del objeto.
-
Sirve para acceder a los atributos y métodos del propio objeto.
-
No es una palabra reservada, podrías llamarlo de otra forma, pero por convención siempre se usa
self
.
Ejemplo simplificado:
class Perro:
def __init__(self, nombre):
self.nombre = nombre # "self.nombre" pertenece al objeto
Cuando haces:
p = Perro("Firulais")
print(p.nombre) # "Firulais"
En realidad internamente se está llamando:
Perro.__init__(p, "Firulais")
donde p
es lo que se pasa como self
.
El *
en la definición del constructor
Cuando defines un método con un *
solito en los argumentos:
def __init__(self, *, image_size, num_classes, image_paths, mask_paths=None, is_train=False):
significa que todos los argumentos que vienen después de *
deben pasarse como argumentos con nombre (keyword arguments).
Esto obliga a que llames al constructor así:
dataset = CustomSegDataset(
image_size=(256, 256),
num_classes=3,
image_paths=["img1.png", "img2.png"],
mask_paths=["mask1.png", "mask2.png"],
is_train=True
)
y no de esta forma:
dataset = CustomSegDataset((256, 256), 3, ["img1.png", "img2.png"]) # ❌ Error
👉 En resumen:
-
self
= referencia a la instancia actual. -
*
= obliga a usar keyword arguments en vez de argumentos posicionales.
Comentarios
Publicar un comentario