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

python中的@Property和@Setter

文章目录

        • 原因一:为了“伪装”和“省事” (API 更优雅)
        • 原因二:为了实现“懒加载” (省内存)
        • 原因三:为了“中间商赚差价” (逻辑控制)

看llama-index的settings代码时,没太看懂,因而有此一问。

为什么要用@Property和@Setter呢?
主要是为了解决3个问题。
原因一:为了“伪装”和“省事” (API 更优雅)
原因二:为了实现“懒加载” (省内存)
原因三:为了“中间商赚差价” (逻辑控制)

原因一:为了“伪装”和“省事” (API 更优雅)

不使用@Property和@Setter,代码:

# 如果没有装饰器,你得这样写(很啰嗦!)Settings.set_llm(DashScope(...))model=Settings.get_llm()

但是用了 @property 和 @setter,你就可以写得像操作普通变量一样简单:

# 用了装饰器,看起来就像在操作普通变量(很清爽!)Settings.llm=DashScope(...)model=Settings.llm
原因二:为了实现“懒加载” (省内存)
@propertydefllm(self)->LLM:ifself._llmisNone:# 如果还没初始化self._llm=resolve_llm("default")# 才去创建对象returnself._llm
原因三:为了“中间商赚差价” (逻辑控制)

@setter 允许你在赋值的时候,偷偷插入一些“检查逻辑”。
虽然 LlamaIndex 的源码里写得比较简单,但在实际开发中,@setter 经常用来做这种事:

@llm.setterdefllm(self,llm):# 1. 先检查一下:你给我的这个东西是合法的模型吗?ifnotisinstance(llm,BaseLLM):raiseTypeError("你给我的是个啥?必须是 LLM 对象!")# 2. 再赋值self._llm=llm# 3. 顺便触发个副作用:比如告诉日志系统,“嘿,模型换了”print("模型已更新,日志系统已同步")
http://www.jsqmd.com/news/573184/

相关文章:

  • 在CentOS上部署RustDesk私有中继服务器:从零搭建到安全配置
  • ReplaceItems创意赋能指南:释放Illustrator设计生产力的隐藏密码
  • 手机IP地址总变?5个场景实测告诉你移动数据和Wi-Fi的IP到底怎么变
  • C语言内存管理:核心挑战与实战技巧
  • 阿里拿38K出来的大佬良心分享,熬夜整理10 万字详细Java面试笔记
  • 基于COMSOL的非均匀热源流热拓扑优化研究——采用归一化方法实现最大换热量与最小压降双目标...
  • 4个维度打造轻量化企业级管理系统:pure-admin-thin实战指南
  • JetBrains IDE试用期重置终极指南:2026年最简安装配置教程
  • 新手入门:在快马平台动手实现你的第一个ui-ux-pro-max设计页面
  • 程序员转行AI必看, 告别AI学习死胡同!4步进阶路线图,助你从入门到项目实战
  • espMqttClient:面向ESP32/ESP8266的轻量级非阻塞MQTT客户端库
  • 凭借这份国内最新最全Java八股文(终极版),我成功入职字节T2-2
  • 忍者像素绘卷:天界画坊MultiSIM电路仿真初探:为硬件加速板设计提供验证
  • Qwen3-ASR-1.7B与LaTeX学术论文语音输入系统
  • Dify私有化部署实战:Redis容器反复重启的深度诊断与根治方案
  • PSCAD实战技巧:巧用Multiple-Run模块,自动化完成AC Faults的临界参数扫描
  • STMPE811电阻触摸屏驱动设计与实现
  • 新手福音:基于快马平台轻松入门21届智能车竞赛编程与开发
  • Ubuntu20.04下微信中文输入失效的终极修复方案
  • 别只跑通AG_NEWS就完事!聊聊文本分类里那些容易被忽略的坑:分词、词表与数据加载
  • OneDrive彻底清除完全指南:从根源解决Windows云存储残留问题
  • 收藏!小白程序员必看:2026年大模型全解析,从AI到智能体,搞懂它才能赢!
  • 组学数据分析实战指南 | (七)蛋白互作界面3D动态可视化技巧
  • 实战指南:基于快马平台生成git自动化部署脚本,实现ci/cd流水线
  • 终极指南:如何快速永久解决IDM激活问题 - 开源脚本完整方案
  • 6大核心步骤掌握RIFE帧插值技术:从卡顿视频到120FPS流畅体验的完整指南
  • dotfiles5安全配置终极指南:系统权限与用户管理最佳实践
  • 小白程序员必看:手把手教你设计Agent记忆模块,从“能用”到“好用”
  • 脑电分析避坑指南:为什么90%的人用错了FFT计算功率谱?从原理到代码详解Welch法的优势
  • 别再只查‘待办’了!Flowable任务查询的三种高级场景:拾取、归还与候选组权限控制详解