La decoración es una forma de especificar código de gestión para funciones y clases. Los propios decoradores adoptan la forma de objetos invocables que procesan otros objetos invocables. Un decorador de clases es similar a los decoradores de funciones, pero se ejecutan al final de una declaración de clase para volver a vincular un nombre de clase a un invocable (por ejemplo, funciones). Como tales, se pueden usar para administrar clases justo después de que se crean o insertar una capa de lógica contenedora para administrar instancias cuando se crean más tarde. El decorador de clases se puede usar para administrar objetos de clase directamente, en lugar de llamadas de instancia, para aumentar/modificar una clase con nuevos métodos. Los decoradores de clases están fuertemente relacionados con los decoradores de funciones, de hecho, usan casi la misma sintaxis y un patrón de codificación muy similar, pero en alguna parte la lógica difiere.
Nota: Para obtener más información, consulte Decoradores en Python
Sintaxis:
sintácticamente, los decoradores de clase aparecen justo antes de las declaraciones de clase.
@decorator class Class_Name: ... inst = Class_Name(50) This piece of code is equivalent to class Class_Name: ... Class_Name = decorator(Class_Name) inst = Class_Name(50);
Entendamos la sintaxis y cómo funciona con un ejemplo:
Ejemplo:
# decorator accepts a class as # a parameter def decorator(cls): class Wrapper: def __init__(self, x): self.wrap = cls(x) def get_name(self): # fetches the name attribute return self.wrap.name return Wrapper @decorator class C: def __init__(self, y): self.name = y # its equivalent to saying # C = decorator(C) x = C("Geeks") print(x.get_name())
PRODUCCIÓN:
Geeks
En este ejemplo, el decorador vuelve a enlazar la clase C con otra clase Wrapper, que retiene la clase original en un ámbito envolvente y crea e incrusta una instancia (wrap) de la clase original cuando se llama. En lenguaje más sencillo, @decorator
es equivalente a C = decorator(C)
que se ejecuta al final de la definición de la clase C. En el cuerpo del decorador, la clase wrapper modifica la clase C manteniendo la originalidad o sin cambiar C. cls(x)
devuelve un objeto de la clase C (con su nombre atributo inicializado con el valor de x). El método get_name devuelve el atributo de nombre para el objeto de ajuste. Y finalmente en la salida se imprime «Geeks».
Entonces, esta fue una descripción general del decorador o envoltorio para la clase. Los decoradores de clase se utilizan para agregar funcionalidad adicional a la clase sin cambiar la clase original para usar según sea necesario en cualquier situación.
Publicación traducida automáticamente
Artículo escrito por shubhamkumarlhh y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA