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

python 链式调用 合并 __setattr__ __getattribute__ in nested object()

使用场景:bpy.types.Scenebpy.context.scene部分功能重叠。

def Get(obj, attr: str | Sequence[str], root=False):"""injected recursive getattr, could pollute objects on chain in whole session"""IS_STR = isinstance(attr, str)if IS_STR and attr.startswith("__") and attr != "__getattribute__":return object.__getattribute__(obj, attr)E: Exception | None = Noneobjs = obj if root else (obj,)for i, o in enumerate(objs):at = attr if IS_STR else attr[i]try:obj_inject = getattr(o, at)setattr(obj_inject, "__getattribute__", Get)return obj_injectexcept AttributeError as e:if " object attribute '__getattribute__' is read-only" in str(e):return obj_injectE = eif E:raise Eelse:raiseclass A:att = True
class B:at = False
if __name__ == "__main__":at = Get([A, B], "at", root=True)print("😄", at)

等价于:

A.at # no attr named 'at'
B.at
http://www.wxhsa.cn/company.asp?id=3596

相关文章:

  • 分享一个稳定好用的免费云服务——阿贝云体验
  • 年化439%,回撤7%,卡玛比率62.5,附本地运行的完整策略python代码 - 详解
  • 接口测试---PyMysql
  • My First Blog
  • 设置基础软件仓库时出错
  • linux c应用性能与内存泄露问题排查工具
  • 深入解析:AI-调查研究-66-机器人 机械臂 软件算法体系:轨迹规划视觉定位力控策略
  • VS Code快捷键
  • API安全厂商综合推荐:2025年权威视角下的主流厂商评估与选型指南
  • 基于FPGA的8PSK+帧同步系统verilog开发,包含testbench,高斯信道,误码统计,可设置SNR
  • 去去就来
  • 使用 CUDA 12.9 编译 PyTorch 2.4.0
  • 豆包生成C#即梦API HTTP调用实例代码
  • 解析几何笔记
  • 基于SOA海鸥优化算法的PID控制器最优控制参数计算matlab仿真
  • 详细介绍:boost::circular_buffer的使用方法简介
  • 基于禁忌搜索算法的TSP问题最优路径搜索matlab仿真
  • PDD9.14 笔试 - 浪矢
  • 增肌,减脂,变瘦的联系和区别
  • (eval):1: _python-argcomplete: function definition file not found
  • 详细介绍:【Spring Boot 报错已解决】Web server failed to start. Port 8080 was already in use.
  • Nordic Neuton.AI 技术优势;
  • channel Sounding 工作流程
  • 基于Zhang-Suen算法的图像细化处理FPGA实现,包含testbench和matlab验证程序
  • channel Sounding RTT和PBR 属性总结
  • 二分查找方法
  • 复制一个数组的方法
  • 判断目标是否在数组里面
  • 选择排序方法
  • ArcGIS Pro 遇到严重的应用程序错误而无法启动 - 教程