Método de clase vs método estático en Python

Método de clase vs método estático en Python
Hablemos sobre la definición y el uso de los métodos de clase y estáticos en Python.

Método de clase en Python

El método de clase está vinculado a la clase en sí y no a ningún objeto de clase. Además, solo las variables de clase son accesibles para él. Alterar un valor de dicha variable de clase afecta a todos los objetos de clase. Declaramos el método como un método de clase cada vez que utilizamos variables de clase al implementar una técnica. La clase se hace referencia por una palabra clave 'CLS', que es el primer parámetro de un método de clase. Al trabajar con técnicas de fábrica, utilizamos métodos de clase. Los métodos de fábrica comprenden aquellos que, dependiendo del caso de uso, devuelven un objeto de clase.

Al usar la función @ClassMethod Decorator y ClassMethod (), debemos notificar explícitamente a Python que el método es de hecho un método de clase. Cuando se definieron los métodos de clase, el proceso es bastante similar al de establecer una función estándar. Del mismo modo, para obtener variables de clase de los métodos de clase, utilizamos una palabra clave de 'CLS' como argumento principal. Como resultado, tenemos control sobre la actualización del estado de clase debido al método de clase. Si bien es posible usar una variable con un nombre diferente para 'CLS', se desaconseja hacerlo dado que el yo es la norma preferida en Python. El método de clase no puede acceder a los atributos de instancia; Solo accederá a los atributos de clase.

Método estático en Python

Se puede completar una tarea independiente utilizando un método estático, que es un método de utilidad genérica. Los métodos estáticos de Python no son exactamente comparables a los de Java, sino más bien a C++. Aunque un método estático no contiene un parámetro inicial implícito, como el yo y el 'CLS', no puede acceder a la clase sino también a las variables de instancia.

Cada método que agregamos a una clase se convertirá directamente en un método de instancia. Se debe usar una función @staticmethod decorador y de otra manera staticmethod () para indicar expresamente a Python que el método es de hecho estático. Es bastante similar a la construcción de una función regular para establecer métodos estáticos dentro de una clase.

Diferencia

El método de clase utilizado el acceso y alteró el estado de la clase. Al alterar un valor de dicha variable de clase que afecta a todos los objetos de clase, puede cambiar el estado de cualquier clase.

Debido a su falta de acceso a las propiedades del objeto (variables de instancia), así como a los atributos de clase, los métodos estáticos solo a veces se usan (variables de clase). Por lo tanto, de hecho pueden ser útiles en algunas situaciones, dicha conversión de tipo.

Como método de fábrica, se utilizan métodos de clase. Los métodos de fábrica incluyen aquellos que, dependiendo del caso de uso, devuelven el objeto de clase. Por ejemplo, antes de generar un objeto, debe realizar ciertos preprocesamiento en esos datos suministrados.

Ejemplo no 1

Veamos cómo utilizar el método estático en el código.

Inicialmente, construimos una clase llamada "Clase EMP 1" para el Empleado 1. Utilizaremos un método estático, especificando una muestra 'y', así como imprimir los resultados mediante el uso del comando de impresión. Después de eso, ahora llamamos "Emp_1.sample () ", una función estática que también se puede invocar utilizando el objeto" Emp1 = Emp_1 ()."

Ejemplo no 2

Al especificar el método de clase, use @ClassMethod Decorator o tal vez la función ClassMethod (). Para crear un método estático, simplemente use la función staticMethod () o @staticmethod decorador.

Siempre que definir un método de clase, utilice 'CLS' como el primer parámetro. Refiriéndose a la clase es el 'CLS'. Debido a la falta de acceso a las variables de instancia, así como a las variables de clase, los métodos estáticos no pueden aceptar el atributo y la clase como parámetro.

Comenzamos declarando una clase llamada 'estudiante' y dándole la variable 'School_name'. A continuación, crearíamos un constructor. Las variables de instancia yo.nombre y yo.ID se declaran. Después de eso, implementamos el método de clase creando la función "Change_School ()". Este método incluye los parámetros "CLS" y "Nombre". Por lo tanto, se utiliza el método estático. Definimos el método "find_notebook ()" y luego pasamos el atributo "Notebook_name". El comando de retorno se utiliza para producir el resultado deseado.

Ejemplo no 3

Los atributos existen tanto para objetos como para clases. Las variables de clase están contenidas dentro de los atributos de clase, mientras que las variables de instancia son parte de los atributos del objeto. Solo se pueden acceder a las características a nivel de clase a través de métodos de clase. Esto puede alterar el estado de la clase.

En esta ilustración, se creó una clase llamada "trabajador" con una variable llamada "ubicación_name". Creamos una función llamada init () que tiene las variables self, el nombre y la identificación. Además, accedemos a dos variables de clase diferentes y variables de instancia, en consecuencia, utilizando el método show () y la función impreso () dos veces. El primer comando de impresión consta de 'trabajador', 'yo.nombre 'y' yo mismo.id 'como parámetros. Del mismo modo, el segundo comando de impresión incluye 'ubicación', 'yo.ubicación_name 'como argumentos. Luego, al acceder únicamente a las variables de clase, llamamos a un método de clase, así como definimos la función Change_Location (). La función print () se aplicaría dos veces más por el método de clase y también su parámetro "CLS". El método estático se construirá. Dentro de esta metodología, se define la función find_toolbox (). Se emplea el comando 'return'. Realizando estas acciones, creamos el objeto "ANI" e invocamos el método Show () apropiado ().

Ejemplo no 4

Los métodos estáticos y de clase están vinculados a esa misma clase. Por lo tanto, el nombre de la clase debe utilizarse para acceder a ellos.

Dentro de este ejemplo, creamos la clase "jugador" y definimos el método init (), que tiene dos variables self y team_no. El método de clase y el método estático se construirían. Dentro del método de clase, definimos la función Change_City () que tiene dos argumentos. La función find_accessories () se definirá dentro del método estático. Esta función tiene solo un argumento. Posteriormente, bajo las instrucciones, llamamos a la función print () dos veces para mostrar los métodos estáticos y de clase. Después de crear un objeto llamado "Hammad", unimos individualmente la clase, así como los métodos estáticos.

Conclusión

En esta guía, hablamos sobre los métodos de clase y estáticos en Python, incluidos lo que son, cómo se definen y cómo crearlos. Para ayudarlo a comprender lo que está sucediendo dentro de los ejemplos, así como cómo se debe utilizar estas funciones a lo largo de su viaje de codificación, también incluimos algunos detalles que distinguieron entre estos dos métodos. En cada uno de estos casos, se utilizan métodos de clase, así como métodos estáticos en Python, junto con los métodos de instancia cuando sea apropiado.