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

globals() 小技巧

scheduler_class = globals()[scheduler_class_name] 

Python 中一种 动态获取类对象 的常用技巧,属于 反射(reflection) 编程的范畴

globals()Python 内置函数,返回一个 字典(dict),包含当前模块(文件)中所有全局变量、函数、类、导入的模块等的名称和对象。
[scheduler_class_name]从 globals() 返回的字典中,以字符串 scheduler_class_name 为键,查找对应的值。
scheduler_class_name一个字符串变量,比如 "DDPMScheduler" 或 "DPMSolverMultistepScheduler"

用法示例

from diffusers import DDPMScheduler, DDIMScheduler, DPMSolverMultistepScheduler# 假设这是从配置文件读取的类名
scheduler_class_name = "DPMSolverMultistepScheduler"# 动态获取类
scheduler_class = globals()[scheduler_class_name]# 现在 scheduler_class 就是 DPMSolverMultistepScheduler 这个类
print(scheduler_class)  # <class 'diffusers.DPMSolverMultistepScheduler'># 可以用来创建实例
scheduler = scheduler_class.from_config(config)

如果不用global():

if scheduler_class_name == "DDPMScheduler":scheduler_class = DDPMScheduler
elif scheduler_class_name == "DDIMScheduler":scheduler_class = DDIMScheduler
elif scheduler_class_name == "DPMSolverMultistepScheduler":scheduler_class = DPMSolverMultistepScheduler
else:raise ValueError(f"Unknown scheduler: {scheduler_class_name}")

这样写冗长、难维护,每新增一个调度器就要改代码

http://www.dtcms.com/a/360564.html

相关文章:

  • C++ 模板全览:从“非特化”到“全特化 / 偏特化”的完整原理与区别
  • Prometheus之启用--web.enable-remote-write-receiver
  • 基于muduo库的图床云共享存储项目(三)
  • 前端常见安全问题 + 防御方法 + 面试回答
  • 「数据获取」《中国工会统计年鉴》(1991-2013)(获取方式看绑定的资源)
  • 【人工智能99问】Qwen3简介(33/99)
  • 浅析NVMe协议:DIF
  • 多线程使用场景一(es数据批量导入)
  • 林曦词典|老死不相往来
  • 洛谷p2392kkksc03考前临时抱佛脚 详解(回溯,深度搜索法)
  • 大模型参数到底是什么?
  • CUDA与图形API的深度互操作:解锁GPU硬件接口的真正潜力
  • C++内存序不迷茫:从CPU缓存一致性理解Memory Order
  • 如何将剪贴板内容存为文件?Paste As File支持文本/图片转换
  • 批处理脚本操作 JSON 文件
  • centos7挂载iscis存储操作记录
  • Java学习笔记(前言:开发环境配置)
  • 五分钟聊一聊AQS源码
  • 【系统架构师设计(五)】需求工程上:需求开发与需求管理概述、结构化需求分析法
  • 【PyTorch】基于YOLO的多目标检测(一)
  • Trae接入自有Deepseek模型,不再排队等待
  • C# .Net8 WinFormsApp使用日志Serilog组件
  • 【IO学习】IO基础和标准IO函数
  • 生物学自然主义:心灵哲学中的生物性探索
  • 《程序员修炼之道》第七八九章读书笔记
  • 栈的基本概念介绍
  • kafka、RabbitMQ结构
  • Qt QNetworkAccessManager 简述及例程
  • 畅问AI-AI机器人对话平台
  • dayjs ​JavaScript 时间日期处理库