Metodos
En Python, los mΓ©todos son funciones que estΓ‘n definidas dentro de una clase y pueden ser llamadas en las instancias de esa clase. Los mΓ©todos son una forma de encapsular comportamientos y acciones que estΓ‘n relacionados con la clase en la que se definen.
MΓ©todos de instancia
Los mΓ©todos de instancia son aquellos que se definen dentro de la clase y actΓΊan sobre una instancia de la misma. Esto significa que se pueden acceder a los atributos de instancia y modificarlos.
Un mΓ©todo de instancia se define de la misma manera que una funciΓ³n normal, pero se pasa la palabra clave self
como primer argumento. self
se refiere a la instancia que llama al mΓ©todo.
AquΓ hay un ejemplo de cΓ³mo definir un mΓ©todo de instancia en una clase Person
:
En este ejemplo, say_hello()
es un mΓ©todo de instancia que imprime un saludo con el nombre y la edad de la persona.
MΓ©todos de clase
Los mΓ©todos de clase son aquellos que se definen dentro de la clase, pero en lugar de actuar sobre una instancia, actΓΊan sobre la clase en sΓ misma. Esto significa que no se puede acceder a los atributos de instancia en un mΓ©todo de clase.
Un mΓ©todo de clase se define utilizando la palabra clave @classmethod
antes de su definiciΓ³n. El primer argumento de un mΓ©todo de clase es la clase misma, que se denota como cls
por convenciΓ³n.
AquΓ hay un ejemplo de cΓ³mo definir un mΓ©todo de clase en una clase Person
:
En este ejemplo, count_people()
es un mΓ©todo de clase que imprime el nΓΊmero de instancias de la clase Person
.
Constructor alternativo
Para crear un constructor alternativo usando un classmethod
, se debe usar el decorador @classmethod
encima del mΓ©todo que se desea usar como constructor. Luego, se puede llamar al mΓ©todo directamente en la clase para crear una nueva instancia de la clase.
AquΓ hay un ejemplo de cΓ³mo crear un constructor alternativo usando un classmethod
en una clase Person
:
En este ejemplo se ha creado un constructor from_string
que toma como argumento el un string que contiene el nombre y edad de una persona separado por un guion (-
). Despues llama al constructor principal usando la sintaxis return cls(name, age)
para crear una nueva instancia de la clase Person
.
Luego, se han creado dos instancias de la clase Person
, una utilizando el constructor principal y la otra utilizando el constructor alternativo. Al imprimir los valores de name
y age
para cada instancia, se puede ver que los valores son correctos y que el constructor alternativo ha funcionado correctamente.
MΓ©todos estΓ‘ticos
Los mΓ©todos estΓ‘ticos son aquellos que se definen dentro de la clase, pero no actΓΊan sobre la instancia ni sobre la clase. Esto significa que no se puede acceder a los atributos de instancia ni a los atributos de clase en un mΓ©todo estΓ‘tico.
Un mΓ©todo estΓ‘tico se define utilizando la palabra clave @staticmethod
antes de su definiciΓ³n. A diferencia de los mΓ©todos de instancia y de clase, los mΓ©todos estΓ‘ticos no toman self
o cls
como primer argumento.
AquΓ hay un ejemplo de cΓ³mo definir un mΓ©todo estΓ‘tico en una clase Math
:
En este ejemplo, add()
es un mΓ©todo estΓ‘tico que suma dos nΓΊmeros.
MΓ©todos mΓ‘gicos
Los mΓ©todos mΓ‘gicos son aquellos que tienen nombres especiales y se utilizan para sobrecargar operadores o cambiar el comportamiento predeterminado de las operaciones en una clase.
Por ejemplo, el mΓ©todo __init__()
que hemos visto anteriormente es un mΓ©todo mΓ‘gico que se llama automΓ‘ticamente cuando se crea una nueva instancia de la clase.
Para sobrecargar el operador de suma (+
) en una clase Point
, podemos definir el mΓ©todo especial __add__
en la clase. Este mΓ©todo se llama cuando se usa el operador +
en dos instancias de la clase Point
.
AquΓ estΓ‘ un ejemplo:
En este ejemplo, definimos la clase Point
con un constructor que toma dos argumentos, x
e y
, que representan las coordenadas del punto. Luego, definimos el mΓ©todo especial __add__
que toma otro objeto Point
como argumento y devuelve un nuevo objeto Point
que es la suma de los dos puntos.
En la ΓΊltima lΓnea del ejemplo, creamos dos instancias de la clase Point
(p1
y p2
) y luego sumamos estas dos instancias usando el operador +
. El resultado se almacena en la variable p3
, que es otra instancia de la clase Point
.
Finalmente, imprimimos las coordenadas de p3
usando los atributos x
e y
.
Last updated