用装饰器参数装饰类

我正在尝试装饰一些类方法,但我不知道它们的名称。装饰的类可以获取一些参数,装饰器函数也可以;但是我遇到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仅修饰功能(变异和形式模型形式都是类)。我正在尝试使用权限来装饰变异类。我希望清楚。

guolihongnanjing 回答:用装饰器参数装饰类

暂时没有好的解决方案,如果你有好的解决方案,请发邮件至:iooj@foxmail.com
本文链接:https://www.f2er.com/3126603.html

大家都在问