Decorador de métodos estáticos
Parte de la sección Object Oriented Programming del Journey de Python de Coddy — lección 11 de 64.
El decorador @staticmethod crea métodos que no necesitan self o la clase. Funcionan como funciones regulares pero pertenecen a la clase.
Aquí hay un ejemplo de una clase con métodos estáticos:
class MathHelper:
@staticmethod
def add(a, b):
return a + b
@staticmethod
def is_even(number):
return number % 2 == 0Llama a los métodos estáticos usando el nombre de la clase:
result = MathHelper.add(5, 3)
print(result)
check = MathHelper.is_even(10)
print(check)También puedes llamarlos desde un objeto:
helper = MathHelper()
result2 = helper.add(2, 4)
print(result2)Salida:
8
True
6Los métodos estáticos no acceden a los datos de instancia o de clase:
class Calculator:
brand = "Python Calc"
def __init__(self, owner):
self.owner = owner
@staticmethod
def multiply(x, y):
# No se puede acceder a self.owner o Calculator.brand
return x * yPunto clave: Utiliza @staticmethod cuando necesites una función que esté relacionada con la clase pero que no necesite acceso a la instancia (self) o a los datos de la clase. No se requiere el parámetro self.
Hoja de referencia
El decorador @staticmethod crea métodos que no necesitan self ni la clase. Funcionan como funciones normales pero pertenecen a la clase.
class MathHelper:
@staticmethod
def add(a, b):
return a + b
@staticmethod
def is_even(number):
return number % 2 == 0Llama a los métodos estáticos usando el nombre de la clase:
result = MathHelper.add(5, 3)
check = MathHelper.is_even(10)También puedes llamarlos desde un objeto:
helper = MathHelper()
result2 = helper.add(2, 4)Los métodos estáticos no acceden a los datos de la instancia o de la clase; no se necesita el parámetro self.
Pruébalo tú mismo
Esta lección no incluye un desafío de código.
Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.
Todas las lecciones de Object Oriented Programming
1Fundamentos de la POO
Archivos externosIntroducción a la POOClases vs ObjetosEl parámetro selfMétodosAtributosMétodo constructor (__init__)Resumen - Calculadora simple4Herencia
Herencia básicaLa función super()Sobrescritura de métodosHerencia múltipleOrden de resolución de métodosResumen - Jerarquía de empleados7Métodos especiales
Introducción a los métodos mágicosSobrecarga de operadoresMétodos mágicos de contenedoresRepaso - Lista personalizada10Patrones de diseño Parte 1
Introducción a los patrones de diseñoPatrón SingletonPatrón FactoryPatrón ObserverPatrón Strategy2Decoradores
Introducción a los decoradoresDecorador propertyDecorador de métodos estáticosDecorador de métodos de clase5Polimorfismo
Sobreescritura de métodos revisitadaDuck TypingClases y métodos abstractosDiseño de interfacesResumen - Calculadora de figuras8Conceptos avanzados de POO
Composición vs. HerenciaMixinsMétodos estáticos y de claseDecoradores de claseGestores de contexto11Patrones de diseño, parte 2
Patrón CommandPatrón AdapterPatrón DecoratorPatrón Template MethodPatrón StatePatrón Composite3Propiedades de clase
Variables de instancia vs de claseDecoradores de propiedadesAtributos privadosResumen - Gestor de cuentas bancarias