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

如何将表示bpy属性路径的字符串转换为对应属性对象并获取其值

方案1:安全无代码执行风险的通用实现(推荐)

通过逐层调用getattr解析嵌套属性路径,完全规避任意代码执行风险,适配所有合法的属性路径场景:

import bpy

attr_str = "bpy.context.scene.eevee.use_gtao"
# 拆分属性路径,取出根模块和后续嵌套属性
path_segments = attr_str.split(".")
current = globals()[path_segments[0]]
for seg in path_segments[1:]:
    current = getattr(current, seg)

Val = current

你也可以封装成通用工具函数方便重复调用:

def resolve_attr_path(attr_path: str):
    segments = attr_path.split(".")
    # 加载根模块/对象
    current = __import__(segments[0]) if segments[0] not in globals() else globals()[segments[0]]
    for seg in segments[1:]:
        current = getattr(current, seg)
    return current

# 调用示例
Val = resolve_attr_path("bpy.context.scene.eevee.use_gtao")

方案2:可信场景下的极简实现

如果你可以100%保证属性字符串的来源安全、没有被恶意篡改的可能,直接用eval即可一步完成转换:

import bpy
Val = eval("bpy.context.scene.eevee.use_gtao")

注意:eval会执行字符串内的所有有效Python代码,非可信场景下使用会存在严重安全隐患。

两种方案最终得到的Val都和直接访问bpy.context.scene.eevee.use_gtao拿到的布尔值完全一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 20:36:10