You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何为动态创建的类添加external_decorator装饰器

给动态创建的类添加装饰器的方法

装饰器的本质是接收一个对象(这里是类)并返回处理后对象的函数,@external_decorator语法糖只是以下代码的简写:

class Robot:
    # 类定义
Robot = external_decorator(Robot)

所以给动态创建的类添加装饰器,只需要把type()创建的类对象传入装饰器函数,再将返回值赋值给类名即可,有两种实现方式:

方式一:分步创建与装饰

def Rob_init(self, name):
    self.name = name

# 1. 先动态创建未装饰的类
Robot2 = type("Robot2", 
              (), 
              {"counter":0, 
               "__init__": Rob_init,
               "sayHello": lambda self: "Hi, I am " + self.name})
# 2. 对创建好的类应用装饰器
Robot2 = external_decorator(Robot2)

方式二:一步完成创建与装饰

直接把type()的返回值作为参数传入装饰器,简化为一行:

def Rob_init(self, name):
    self.name = name

Robot2 = external_decorator(
    type("Robot2", 
         (), 
         {"counter":0, 
          "__init__": Rob_init,
          "sayHello": lambda self: "Hi, I am " + self.name})
)

两种方式的效果和静态类使用@external_decorator完全一致,都是让external_decorator处理动态生成的类,最终得到装饰后的类对象。

内容的提问来源于stack exchange,提问作者Grigory Ilizirov

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.05 15:20:29