当前位置: 首页 > news >正文

元类- hook技术

目录

    元类的定义

    class _AgentMeta(type):"""The agent metaclass that wraps the agent's reply, observe and printfunctions with pre- and post-hooks."""def __new__(mcs, name: Any, bases: Any, attrs: Dict) -> Any:"""Wrap the agent's functions with hooks."""for func_name in ["reply","print","observe",]:if func_name in attrs:attrs[func_name] = _wrap_with_hooks(attrs[func_name])return super().__new__(mcs, name, bases, attrs)
    
    ## 元类的使用
    class AgentBase(StateModule, metaclass=_AgentMeta):"""Base class for asynchronous agents."""id: str"""The agent's unique identifier, generated using shortuuid."""supported_hook_types: list[str] = ["pre_reply","post_reply","pre_print","post_print","pre_observe","post_observe",]"""Supported hook types for the agent base class."""
    

    metaclass=_AgentMeta 表示:用 _AgentMeta 来创建 AgentBase 这个类
    不写时,默认 metaclass 是 type(普通类都由 type 创建)
    什么时候执行?
    在定义类时(例如 import 这个模块时),Python 会:
    把类体里的属性收集到 attrs 里
    调用 _AgentMeta.new(mcs, "AgentBase", (StateModule,), attrs)
    用返回的对象作为 AgentBase 类
    也就是说,元类在“创建类”时运行,而不是创建实例时。

    类比
    entMe
    普通情况:type 创建类 → 类创建实例元类情况:_AgentMeta 创建类 → 类创建实例
    _AgentMeta 在创建 AgentBase 时,把 reply、print、observe 等方法用 _wrap_with_hooks 包了一层,所以这些方法会带 pre/post 钩子。
    总结
    metaclass=_AgentMeta 指定:创建 AgentBase 时使用 _AgentMeta 而不是默认的 type,从而在类创建阶段对方法做装饰(如加 hooks)。

    http://www.jsqmd.com/news/385041/

    相关文章:

  • CF1077div2C
  • C++中的值传递、地址传递、引用传递
  • 2026年市面上可靠的混合机供应商口碑排行情况揭秘,试验筛/摇摆筛/旋振筛/无尘投料站/真空上料机,混合机厂家推荐排行 - 品牌推荐师
  • 2026年2月昆明验光师培训考证公司推荐,助力开店就业双选 - 品牌鉴赏师
  • 老年人能力评估系统开发日志
  • SQL简介与其中的DDL
  • 2026年2月云南眼科设备销售公司推荐,一站式采购服务与保障 - 品牌鉴赏师
  • 2026江苏数控培训优质职业学校排行一览,PLC培训/数控培训/三坐标培训/非标机械设计培训,数控培训职业学校排行榜 - 品牌推荐师
  • 踩坑了!Spring Boot 异步调用 CompletableFuture 的坑你踩过几个
  • 公路隧道铁路地铁隧道漏水隧道渗水识别分割数据集labelme格式2758张1类别
  • 桐庐中职舞蹈表演专业有哪些?最新解析,表演系艺术职高学校/艺术类职高/化妆职高/化妆专业中职/艺体职高,中职厂家有哪些 - 品牌推荐师
  • 轻量化模型浪潮下的关键技术突破:DeepSeek INT4量化优化引领2026端侧算力新纪元
  • Linux apt 命令
  • 2026年2月西南青少年儿童视力验光中心推荐,专业设备与配镜保障优选 - 品牌鉴赏师
  • Percy深度解析
  • Linux yum 命令
  • 揭秘关键!AI应用架构师揭秘企业算力资源调度关键
  • 北京宠物训练基地哪家好?北京宠物训练基地top榜单(2026年新版) - 品牌2025
  • STM32H750串口DMA收发实验源码 采用串口空闲中断接收,处理不定长数据, dma直接发...
  • 商贸加工行业数字化管理系统设计与实现(Python)
  • Visual Regression Testing深度解析
  • Navicat Premium 17 专业版安装及使用教程
  • 小白/程序员入门大模型:AI产品经理的职责与必备技能解析,大模型产品经理需要哪些必备技能?
  • 【Linux网络】基于Reactor反应堆模式的高并发服务器深度解析:原理、实战与踩坑记录
  • 张建国2026到2028信奥课程学习规划书
  • 大模型时代的产品经理:为何必须学习,零基础小白也能学会的大模型,产品经理必备技能!
  • 巴菲特的投资方法与长期收益策略
  • 15分钟发布两大AI模型,万亿美元蒸发!DeepSeek V4将至,小白程序员该收藏这篇看懂趋势!
  • 小白程序员必看:分块决定RAG质量,掌握它才能用好大模型!
  • Jasmine + Karma深度解析