Tipos de Métodos de clase en Python



@eduardo_gpg

Número de visitas 2945

Tiempo de lectura 3 min

10 Agosto 2022

En Python es posible utilizar 3 tipos de métodos en nuestras clases. Me refiero a Métodos de instancia, métodos de clase y métodos estáticos. ☕

El conocer cómo definir y utilizar estos métodos sin duda alguna no será de mucha utilidad para mejorar como desarrolladores Python, es por ello que, en esta ocasión, me gustaría hablemos sobre estos tipos de métodos. Aprenderemos a cómo definirlos y por supuesto como y cuando utilizarlos.

Será un post sumamente interesante, así que te invito a que te quedes.

Bien, sin más introducción, pongamos manos a la obra. 🤠

Métodos de instancia

Comencemos con los métodos de instancia. Verás, estos métodos, como su nombre lo indica, son métodos que le pertenecen a la instancia, es decir al objeto mismo, por lo tanto, para poder utilizarlos deberá ser a través del objeto. 😺

Aquí un ejemplo.

class User:
    def __init__(self, username):
        self.username = username

    def say_hello(self):
        print(f'Hola, mi username es {self.username}')
>>> user = User('eduardo')
>>> user.say_hello()
Hola, mi username es eduardo.

En este caso el método say_hello es un método de instancia. Ya que se encuentra dentro de la clase y le pertenece a la instancia.

Estos métodos se caracterizan por, obligatoriamente, poseer un parámetro que haga referencia al objeto mismo.

Si bien este parámetro puede tener el nombre que deseemos, sin embargo, por convención lo llamaremos self.

self, recordemos entonces, NO es una palabra reservada, es un parámetro que representa a la instancia. 🐍

Con los métodos de instancia es posible crear, acceder, modificar o eliminar los atributos del objeto; así mismo es posible llamar a otros métodos de instancia dentro de ellos.

Aquí otro ejemplo.

class User:
    def __init__(self, username):
        self.username = username

    def update(self, username, password):
        self.username = username
        self.password = password

         self.save()

    def __save(self):
        pass

Para este segundo ejemplo podemos observar cómo el método update recibe como argumento 2 valores, modifica 2 atributos y hace el llamado a otro método de instancia.

Si te pregunta el por qué del doble guión bajo (__) para el método save, te recomiendo ampliamente le eches un vistazo al siguiente post. 🤩

Métodos de clase

Ahora hablemos de los métodos de clase, estos métodos que le pertenecen a la clase. Para hacer uso de ellos lo haremos a utilizar la clase. No será necesario instanciar nada.

Para crear los métodos de clase es necesario hacer uso del decorador classmethod. De igual forma, será necesario definir un parámetro que haga referencia a la clase. Por conversión este parámetro tendrá por nombre cls.

Si bien es posible utilizar el nombre que deseemos para este parámetro, lo recomendable es no hacerlo. 😛

Aquí un ejemplo.

class User:

    @classmethod
    def set_password(cls, password):
        return password + " super algoritmo"
>>> User.set_password('Demo')
Demo super algoritmo

Los métodos de clase, al pertenecer a la clase, nos permiten acceder a los atributos y métodos de la clase. Vaya, nos permite conocer el estado de la clase misma.

Aquí otro ejemplo.

class Circle:

    PI = 3.14159265359

    @classmethod
    def area(cls, radio):
        return cls.PI  * float(radio ^ 2)
>>> Circle.PI
3.14159265359
>>> Circle.area(10)
25.1327412287

Para este nuevo ejemplo definimos el método área que hace uso del atributo de clase PI.

Método estáticos

Ya para finalizar hablemos de los métodos estáticos.

Verás, este tipo de métodos se caracterizan por ser métodos que pueden ser utilizados directamente por la clase, al igual que sucede con los métodos de clase, con la diferencia que los métodos estáticos no le pertenecen a la clase como tal.

Estos métodos no pueden acceder a los atributos de clase ni a sus métodos.

Para crear métodos estáticos es necesario utilizar el decorador @staticmethod, y, al no pertenecer a una clase o a instancia, estos métodos pueden no poseer parámetro alguno.

Veamos un ejemplo.

class Circle:

    @staticmethod
    def area(radio):
        return 3.14159265359  * float(radio ^ 2)
>>> Circle.area(10)
25.1327412287

Aunque, de igual forma, los métodos estáticos también pueden ser llamados por las instancias de las clases. Sí, así como lo lees.

>>> circle = Circle()
>>> circle.area(10)

25.1327412287

Conclusión

Así que ahora ya lo sabes, los métodos de instancia pertenecen a la instancias, métodos de clase a la clase y los métodos estáticos, bueno, no pertenece ni a la clase per se ni a la instancia.


¿El contenido te resulto de ayuda?

Para poder dejar tu opinión es necesario ser un usuario autenticado. Login

Más Tips y Ejercicios 🐍

Adquiere una subscripción PyWombat por tan solo $3 USD. al mes.

Conoce los beneficios de ser usuario premium:
Niveles desbloqueados: Ten accesos a todos los niveles de ejercicios. 🔓
Nuevo límite: Incrementa tu límite de ejercicios por semana. 🚀
Contenido único: Recibe semanalmente recursos exclusivos de Python (Videos, Artículos y Capitulos del libro PyWombat, comienza como desarrollador Python. 🐍