Instancia vs. Estática vs. Métodos de clase en Python Las diferencias importantes
Los métodos de Python a menudo pueden ser confusos una vez que te metes en la programación orientada a objetos (OOP). Esta guía cubre los tres tipos principales de métodos en Python.
Los 3 tipos de métodos en Python
Hay tres tipos de métodos en Python: métodos de instancia, métodos estáticos, y métodos de clase.
No siempre es necesario conocer las diferencias para codificar los scripts básicos de Python, pero una vez que avance en OOP, las diferencias pueden hacer un gran cambio.
Si eres nuevo en Python, o simplemente quieres experimentar sin tener que instalar nada, entonces asegúrate de visitar estos shells de Python interactivos en línea. Prueba Python en tu navegador con estos Shells interactivos en línea gratis Prueba de Python en tu navegador con estos Interactive en línea gratis Shells Ya sea que esté repasando estos ejemplos de Python o revisando los conceptos básicos de matrices y listas, puede probar el código directamente en su navegador. Aquí están los mejores intérpretes de Python en línea que hemos encontrado. Lee mas .
Antes de comenzar: Entendiendo los patrones decorativos
Antes de analizar las diferencias, es importante comprender un patrón de diseño conocido como patrón decorador, o simplemente llamado un decorador.
Los decoradores suenan complejos, pero no hay nada que temer. Los decoradores son simplemente funciones. Puede escribirlas usted mismo o usar las que se incluyen en las bibliotecas o la biblioteca estándar de Python.
Como cualquier función, los decoradores realizan una tarea. La diferencia aquí es que los decoradores aplican la lógica o cambian el comportamiento de otras funciones. Son una excelente manera de reutilizar el código y pueden ayudar a separar la lógica en preocupaciones individuales.
El patrón decorador es la forma preferida de Python para definir métodos estáticos o de clase. Así es como se ve uno en Python:
class DecoratorExample: "" "Example Class" "" def __init __ (self): "" "Example Setup" "" print ('Hello, World!') @staticmethod def example_function (): "" "Este método está decorado!" "" imprimir ('¡Soy una función decorada!') de = DecoratorExample () de.example_function ()
Los decoradores deben preceder inmediatamente una función o declaración de clase. Comienzan con el @ firmar, y a diferencia de los métodos normales, no tiene que poner paréntesis al final a menos que esté pasando argumentos.
Es posible combinar varios decoradores, escribir los tuyos y aplicarlos también a las clases, pero no tendrás que hacer nada de eso para estos ejemplos..
Métodos de instancia en Python
Los métodos de instancia son el tipo más común de métodos en las clases de Python. Estos se llaman así porque pueden acceder a datos únicos de su instancia. Si tiene dos objetos creados a partir de una clase de automóvil, entonces cada uno puede tener propiedades diferentes. Pueden tener diferentes colores, tamaños de motor, asientos, etc..
Los métodos de instancia deben tener yo como parámetro, pero no es necesario que lo pases todo el tiempo. El yo es otro término especial de Python. Dentro de cualquier método de instancia, puede utilizar self para acceder a cualquier dato o método que pueda residir en su clase. No podrás acceder a ellos sin pasar por ti mismo..
Finalmente, como los métodos de instancia son los más comunes, no se necesita decorador. Cualquier método que cree se creará automáticamente como un método de instancia, a menos que le indique a Python lo contrario..
Aquí hay un ejemplo:
class DecoratorExample: "" "Example Class" "" def __init __ (self): "" "Example Setup" "" print ('Hello, World!') self.name = 'Decorator_Example' def example_function (self): "" " ¡Este método es un método de instancia! "" "Print ('¡Soy un método de instancia!') Print ('Mi nombre es' + self.name) de = DecoratorExample () de.example_function ()
los nombre se accede a la variable a través de yo. Note que cuando ejemplo_función se llama, no tienes que pasarte a ti mismo en Python hace esto por ti.
Métodos estáticos en Python
Los métodos estáticos son métodos que están relacionados de alguna manera con una clase, pero no necesitan acceder a ningún dato específico de la clase. No tienes que usar yo, y ni siquiera necesita crear instancias de una instancia, simplemente puede llamar a su método:
class DecoratorExample: "" "Example Class" "" def __init __ (self): "" "Example Setup" "" print ('Hello, World!') @staticmethod def example_function (): "" "Este método es un método estático ! "" "imprimir ('¡Soy un método estático!') de = DecoratorExample.example_function ()
los método estático Se usó decorador para decirle a Python que este método es un método estático..
Los métodos estáticos son excelentes para las funciones de utilidad, que realizan una tarea de forma aislada. No necesitan (y no pueden) acceder a los datos de clase. Deben ser completamente autónomos, y solo trabajar con datos pasados como argumentos. Puede usar un método estático para sumar dos números o imprimir una cadena dada.
Métodos de clase en Python
Los métodos de clase son el tercer y último tipo de método OOP que se debe conocer. Los métodos de clase saben sobre su clase. No pueden acceder a datos de instancia específicos, pero pueden llamar a otros métodos estáticos.
Los métodos de clase no necesitan yo como argumento, pero necesitan un parámetro llamado cls. Esto significa clase, y como yo, se pasa automáticamente por Python.
Los métodos de clase se crean utilizando el @classmethod decorador.
class DecoratorExample: "" "Example Class" "" def __init __ (self): "" "Example Setup" "" print ('Hello, World!') @classmethod def example_function (cls): "" "Este método es una clase method! "" "print ('I \' ma class method! ') cls.some_other_function () @staticmethod def some_other_function (): print (' Hello! ') de = DecoratorExample () de.example_function ()
Los métodos de clase son posiblemente los tipos de métodos más confusos de los tres, pero tienen sus usos. Los métodos de clase pueden manipular la clase en sí, lo cual es útil cuando se trabaja en proyectos más grandes y complejos..
Cuándo usar cada tipo de método
Puede parecer una decisión difícil y desalentadora elegir entre los tipos de métodos en Python, pero pronto aprenderás a hacerlo con un poco de práctica..
Incluso si solo escribe pequeños scripts para divertirse, aprender otra característica de OOP de Python es una gran habilidad para conocer, y puede ayudar a hacer que su código sea más fácil de solucionar y reutilizar en el futuro..
En resumen:
- Métodos de instancia: El tipo de método más común. Capaz de acceder a datos y propiedades únicas para cada instancia.
- Métodos estáticos: No se puede acceder a nada más en la clase. Código totalmente autocontenido..
- Métodos de clase: Puede acceder a métodos limitados en la clase. Puede modificar detalles específicos de la clase.
Si este tutorial era un poco avanzado, o no era exactamente lo que buscabas, entonces, ¿por qué no echas un vistazo a estos cursos para ir de principiante de Python a pro 5 cursos que te llevarán de Python Beginner a Pro 5 cursos que te ayudarán? Entre You y Python Beginner to Pro Estos cinco cursos le enseñarán todo acerca de la programación en Python, uno de los idiomas más populares que existen en este momento. Lee mas ? Estos 5 sitios web también son excelentes para los principiantes de Python. Si desea un uso físico y real de Python, pero está aburrido de la Raspberry Pi, ¿qué le parece nuestra guía para controlar Arduino con Python? ¿Cómo programar y controlar un Arduino con Python? ¿Cómo programar y controlar un Arduino con Python? Es imposible programar directamente un Arduino en Python, pero puede controlarlo por USB usando un programa Python. Así es cómo. Lee mas ?
Explorar más sobre: Programación, Python.