用装饰器参数装饰类

时间:2019-11-11 04:03:29

标签: python class python-decorators

我正在尝试装饰一些类方法,但我不知道它们的名称。装饰的类可以获取一些参数,装饰器函数也可以;但是我遇到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()

我希望内部类内部使用装饰器参数进行验证,以了解装饰类方法是否可以执行。

编辑:我正在使用Django +石墨烯+ JWT。 Graphene允许在变异中使用django模型形式,但是JWT仅修饰功能(变异和形式模型形式都是类)。我正在尝试使用权限来装饰变异类。我希望清楚。

0 个答案:

没有答案