Código de Python - Ejemplo del uso de @staticmethod y @classmethod

Imágen de perfil
Val: 1.101
Oro
Ha mantenido su posición en Python (en relación al último mes)
Gráfica de Python

Ejemplo del uso de @staticmethod y @classmethodgráfica de visualizaciones


Python

Publicado el 21 de Abril del 2019 por joel
947 visualizaciones desde el 21 de Abril del 2019
Simple código que muestra el uso de @staticmethod y @classmethod

@staticmethod
Definimos el método como @staticmethod, lo cual se podrá ejecutar directamente como si fuera una función o una instancia

@classmethod
Definimos el método como @classmethod, lo cual se podrá ejecutar directamente como si fuera una función o con la instancia, pero recibe implícitamente una instancia al objeto con cls

Requerimientos

Python 2.x y Python 3.x

Versión 1

Publicado el 21 de Abril del 2019gráfica de visualizaciones de la versión: Versión 1
948 visualizaciones desde el 21 de Abril del 2019
estrellaestrellaestrellaestrellaestrella
estrellaestrellaestrellaestrella
estrellaestrellaestrella
estrellaestrella
estrella

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
#!/usr/bin/env python
# -*- coding: utf-8 -*-
 
"""
Clase de ejemplo para el uso de @classmethod y @staticmethod
"""
 
class MiClase(Exception):
    """
    Clase de ejemplo
    """
    valor = 5
 
    def suma1(self, valor1, valor2):
        """
        Definimos un metodo que se llama unicamente desde una instancia de la
        clase, el cual recibe implicitamente una instancia al objeto como primer
        argumento
        Solo se puede llamar con una instancia a la clase
            ObjetoMiClase = MiClase()
            ObjetoMiClase.suma1(n,n)
        """
        return valor1+valor2+self.valor
 
    @staticmethod
    def suma2(valor1, valor2):
        """
        Definimos el metodo como @staticmethod, lo cual se podra ejecutar
        directamente como si fuera una funcion:
            MiClase.suma1(n,n)
        o con la instancia:
            ObjetoMiClase = MiClase()
            ObjetoMiClase.suma2(n,n)
        No tendra relación con el objeto donde se encuentra
        """
        return valor1+valor2
 
    @classmethod
    def suma3(cls, valor1, valor2):
        """
        Definimos el metodo como @classmethod, lo cual se podra ejecutar
        directamente como si fuera una funcion:
            MiClase.suma1(n,n)
        o con la instancia:
            ObjetoMiClase = MiClase()
            ObjetoMiClase.suma3(n,n)
        Tendra acceso al contenido del objeto aunque no este instanciado
        """
        return valor1+valor2+cls.valor
 
 
# llamamos a las metodos sin instanciar la clase
print("Sin instancia")
print("-------------")
print("MiClase.suma2(1, 2)", MiClase.suma2(1, 2)) # devolvera: 3
print("MiClase.suma3(1, 2)", MiClase.suma3(1, 2)) # devolvera: 8
 
print("\nCon instancia")
print("---------------")
ObjetoMiClase = MiClase()
# llamamos a los metodos con una instancia de la clase
print("ObjetoMiClase.suma1(1, 2)", ObjetoMiClase.suma1(1, 2)) # devolvera: 8
print("ObjetoMiClase.suma2(1, 2)", ObjetoMiClase.suma2(1, 2)) # devolvera: 3
print("ObjetoMiClase.suma3(1, 2)", ObjetoMiClase.suma3(1, 2)) # devolvera: 8



Comentarios sobre la versión: Versión 1 (0)


No hay comentarios
 

Comentar la versión: Versión 1

Nombre
Correo (no se visualiza en la web)
Valoración
Comentarios
Es necesario revisar y aceptar las políticas de privacidad

http://lwp-l.com/s5266