Украсьте класс с параметрами декоратора - PullRequest
0 голосов
/ 11 ноября 2019

Я пытаюсь украсить некоторые методы класса, но я не знаю их имен. Декорированный класс может получить несколько параметров, а также функцию декоратора;но я получаю maximum recursion depth exceed ошибку и параметры декоратора не были доступны при определении внутреннего класса.

def decorator(decorator_param):
  def wrapper(cls):
    class InnerClass:
      def __init__(self, *args, **kwargs):
        self.oInstance = cls(*args, **kwargs)
      def __getattribute__(self, name):
        # decorator validations...
        # here I need the decorator_param ¯\_(ツ)_/¯
        return self.oInstance.__getattribute__(name)
    return InnerClass
  return wrapper

@decorator("a decorator param")
class DecoratedClass():
  def __init__(self, name):
    self.name = name
  def say_hello(self):
    print("Hello %s" % self.name)

ie = DecoratedClass(name="cristhiam")
ie.say_hello()

Я ожидаю, что использование параметров декоратора внутри внутреннего класса выполнит некоторые проверки, если метод декорированного класса может выполняться или нет.

...