¿Para qué sirven los decoradores y los métodos de clase en Python? ¿Por qué y cuándo usarlos?

Los decoradores se originaron en el patrón de decorador en mi humilde opinión. Lo que dice, una pieza de código utilizada para decorar algún otro código. Para mostrarle la necesidad, solo vea este ejemplo:

@assert_file_extension
def import_file_content (nombre_archivo):
# Aquí puede asumir que ya recibió una extensión de archivo válida.
# y proceder a procesarlo.

Como puede ver, ‘afirmar_extensión_archivo` es el decorador aquí. Si no está allí, así es como se vería el código:

def import_file_content (nombre_archivo):
si validar (nombre_archivo):
# procesalo
más:
# generar un error.

Como puede ver desde arriba, el código anterior se ve feo en comparación con el primer enfoque. Por la misma razón, los decoradores serían útiles. Extrayendo funcionalidad innecesaria del bloque de código real y moviéndolo afuera.

Llegando a la parte `@ classmethod`, se usa cuando tienes un método que no necesita un objeto para instanciarse para llamarlo. Por que lo necesitarias ?
A veces, aunque todos sus métodos están bajo una clase, y uno de esos métodos no usa ‘self’ en absoluto.

Clase Persona (objeto):
def introduce_myself (self):
imprima el formato ‘Hola, soy {}’. (self.name)

@classmethod
def say_hello (cls):
imprimir “¡Hola!”

Un decorador es un invocable que devuelve un invocable. Modifica funciones / métodos o clases al mejorarlos con algunas características adicionales. Funciona más como una macro. Concepto muy potente, especialmente utilizado en marcos de desarrollo web como Django.

Se puede encontrar un enlace útil en Python Tutorial: decoradores (funciones y clases).
y
Uso avanzado de decoradores y metaclases de Python

More Interesting

En las startups, ¿por qué los desarrolladores entrevistan a los ingenieros de control de calidad? ¿Son los ingenieros de control de calidad lo contrario de los desarrolladores?

¿Es Bhubaneswar el nuevo centro de TI del este?

¿Cómo gestionan las empresas más pequeñas con diferentes dispositivos de aplicaciones / clientes sus esfuerzos de desarrollo y prueba?

¿Cómo se compara la distribución de inteligencia de los desarrolladores front-end con los desarrolladores back-end?

¿Cómo es ser pasante en el programa de pasantías IBM Extreme Blue? ¿Diría que es mejor que una pasantía en Amazon, Google, Microsoft o Facebook?

¿Es un MVP lo mismo que un prototipo?

Cómo saber si debo ser un desarrollador / ingeniero de software

¿Qué ensayos me recomendarías leer si quiero ampliar mis conocimientos fuera de la escuela?

¿Se dirige al desastre si tiene demasiadas partes móviles en la arquitectura de su sistema de software?

¿Qué debo hacer para mejorar mis habilidades de programación cuando actualmente estoy en mi tercer semestre estudiando ingeniería de software? ¿Qué libros son los mejores para aprender?

¿Por qué es tan popular Google Guice para la inyección de dependencia durante la primavera?

Tecnología: ¿Qué implica "gráfico"?

¿Cuál es tu libro tecnológico favorito y por qué?

¿Cuál es la diferencia entre las técnicas de prueba de software y las estrategias de prueba de software?

¿Cuáles son las desventajas de la programación procesal?