gpt4 book ai didi

python - 如何将动态数据传递给装饰器

转载 作者:行者123 更新时间:2023-11-28 18:55:30 25 4
gpt4 key购买 nike

我正在尝试编写一个基本的 crud Controller 类来执行以下:

class BaseCrudController:
model = ""
field_validation = {}
template_dir = ""

@expose(self.template_dir)
def new(self, *args, **kwargs)
....

@validate(self.field_validation, error_handler=new)
@expose()
def post(self, *args, **kwargs):
...

我的意图是让我的 Controller 扩展这个基类,设置模型、field_validation 和模板位置,准备就绪。

不幸的是,装饰器(据我所知)被解释为函数已定义。因此它无法访问实例的值(value)。有没有办法从 sub 传递动态数据或值类(class)?

例如:

class AddressController(BaseCrudController):
model = Address
template_dir = "addressbook.templates.addresses"

当我尝试加载 AddressController 时,它说“self is not defined”。我假设基类在子类初始化之前评估装饰器。

谢谢,史蒂夫

最佳答案

也许使用工厂来创建类会比子类化更好:

def CrudControllerFactory(model, field_validation, template_dir):
class BaseCrudController:
@expose(template_dir)
def new(self, *args, **kwargs)
....

@validate(field_validation, error_handler=new)
@expose()
def post(self, *args, **kwargs):
....

return BaseCrudController

关于python - 如何将动态数据传递给装饰器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2884771/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com