Podemos crear fácilmente decoradores dentro de una clase y es fácilmente accesible para sus clases secundarias. Durante la creación de Decorator, debemos tener cuidado de que la función que estamos definiendo dentro del decorador debe tomar la referencia del objeto actual (self) como parámetro, y mientras accedemos a ese decorador desde la clase secundaria en ese momento debemos llamar a ese decorador usando la clase nombre (clase en la que Decorator está presente).
Ejemplo 1: Aquí, en este ejemplo, estamos creando una función decoradora dentro de la Clase A. Dentro de la Clase A, el método de instancia «fun1» está llamando a la función decoradora «Decorators» dentro de la Clase B «fun2». El método de instancia está llamando a la función de decorador de la Clase A. Para usar el decorador de la Clase A, debemos requerir el uso del nombre de Clase en el que el decorador está presente, por eso usamos «@A.Decorators» aquí.
Python3
# creating class A class A : def Decorators(func) : def inner(self) : print('Decoration started.') func(self) print('Decoration of function completed.\n') return inner @Decorators def fun1(self) : print('Decorating - Class A methods.') # creating class B class B(A) : @A.Decorators def fun2(self) : print('Decoration - Class B methods.') obj = B() obj.fun1() obj.fun2()
Producción:
Decoration started. Decorating - Class A methods. Decoration of function completed. Decoration started. Decoration - Class B methods. Decoration of function completed.
Ejemplo 2: el número de verificación es par o impar usando Decorator.
Python3
class Check_no : # decorator function def decor(func) : def check(self, no) : func(self, no) if no % 2 == 0 : print('Yes, it\'s EVEN Number.') else : print('No, it\'s ODD Number.') return check @decor #instance method def is_even(self, no) : print('User Input : ', no) obj = Check_no() obj.is_even(45) obj.is_even(2) obj.is_even(7)
Producción:
User Input : 45 No, it's ODD Number. User Input : 2 Yes, it's EVEN Number. User Input : 7 No, it's ODD Number.
Ejemplo 3: Comprobación de la calificación a partir de las marcas.
Python3
# parent class class Student : # decorator function def decor(func) : def grade(self,marks) : func(self,marks) if marks < 35 : print('Grade : F') elif marks < 50 : print('Grade : E') elif marks < 60 : print('Grade : D') elif marks < 70 : print('Grade : C') elif marks < 80 : print('Grade : B') elif marks < 100 : print('Grade : A') return grade # child class class Result(Student) : @Student.decor # instance method def result(self,marks) : print('Your Score : ',marks) # creating object of parent class obj = Result() obj.result(89) obj.result(34)
Producción:
Your Score : 89 Grade : A Your Score : 34 Grade : F
Publicación traducida automáticamente
Artículo escrito por ronilpatil y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA