Aprende Python · lección gratuita
Un método es una función definida dentro de una clase que opera sobre los datos de un objeto. La diferencia clave con una función normal es su primer parámetro: self, que representa la propia instancia que llama al método. Gracias a self, un método puede leer y modificar los atributos del objeto, así como devolver valores calculados a partir de ellos. Cuando escribes objeto.metodo(), Python pasa automáticamente el objeto como self, por eso no lo escribes entre los paréntesis.
def dentro de la clase y recibe self como primer parámetro.self no es una palabra clave: es solo el nombre por convención del primer parámetro (siempre úsalo así).self.atributo y a otros métodos con self.otro_metodo().self.contador += 1) o devolver un valor con return.obj.metodo(args), Python inserta obj como self; tú solo pasas los argumentos restantes.__init__ también es un método: el constructor que inicializa los atributos al crear el objeto.Hasta ahora viste atributos guardados en self dentro del constructor __init__. Los métodos son el siguiente paso: dan comportamiento a tus objetos. Mientras los atributos describen qué es un objeto (su estado), los métodos describen qué puede hacer. Todo método de instancia recibe automáticamente la instancia como primer argumento, que por convención llamamos self. A través de self el método "sabe" sobre qué objeto está trabajando.
Observa cómo se define y se usa un método. La llamada c.saludar() es equivalente, por debajo, a Persona.saludar(c): el objeto antes del punto se convierte en self.
class Persona:
def __init__(self, nombre):
self.nombre = nombre
def saludar(self): # self = la instancia
return "Hola, soy " + self.nombre
c = Persona("Ana")
print(c.saludar()) # Hola, soy Ana
Los métodos pueden recibir más parámetros además de self, pueden modificar el estado del objeto y pueden llamar a otros métodos del mismo objeto usando self.. Un método que cambia atributos suele no devolver nada (devuelve None); un método que calcula algo usa return. Diseña tus clases pensando en esa distinción: comandos que modifican vs. consultas que devuelven.
class Contador:
def __init__(self):
self.valor = 0
def incrementar(self): # modifica estado
self.valor += 1
def actual(self): # devuelve estado
return self.valor
# 1) Método que usa un atributo y devuelve un valor
class Rectangulo:
def __init__(self, ancho, alto):
self.ancho = ancho
self.alto = alto
def area(self):
return self.ancho * self.alto
r = Rectangulo(4, 3)
print(r.area()) # 12
# 2) Método con parámetros extra además de self
class Cuenta:
def __init__(self, saldo):
self.saldo = saldo
def depositar(self, monto): # modifica el atributo
self.saldo += monto
cuenta = Cuenta(100)
cuenta.depositar(50)
print(cuenta.saldo) # 150
# 3) Un método que llama a otro método con self
class Circulo:
def __init__(self, radio):
self.radio = radio
def area(self):
return 3 * self.radio * self.radio # pi simplificado a 3
def describir(self):
return "Area: " + str(self.area())
print(Circulo(2).describir()) # Area: 12
💡 Recuerda siempre escribirselfcomo primer parámetro de los métodos de instancia. Si lo olvidas, Python lanzará unTypeErrorpor número de argumentos, porque la instancia se pasa automáticamente.
| Acción | Sintaxis | Ejemplo |
|---|---|---|
| Definir método | def metodo(self): | def saludar(self): |
| Método con parámetros | def metodo(self, x): | def sumar(self, x): |
| Leer atributo | self.atributo | self.nombre |
| Modificar atributo | self.atributo = valor | self.saldo += 10 |
| Llamar a otro método | self.metodo() | self.area() |
| Devolver valor | return ... | return self.x * 2 |
| Invocar método | objeto.metodo(args) | r.area() |
---