用decorator参数修饰类

2024-04-25 07:25:23 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图修饰一些类方法,但我不知道它们的名称。修饰类可以得到一些参数,也可以得到decorator函数;但是我得到了maximum recursion depth exceed错误,并且在内部类定义中没有访问decorator参数。你知道吗

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()

我希望在内部类中使用decorator参数来验证修饰类方法是否可以执行。你知道吗

编辑:我用的是django+graphene+JWT。Graphene允许在突变中使用django模型形式,但是JWT只修饰函数(突变和形式模型形式都是类)。我想用变异类来装饰。我希望说清楚。你知道吗


Tags: 方法函数nameself参数returnparamdef