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

如何为Python字典嵌套属性创建动态别名而非仅取值?

解决方案

方案1:极简动态类+Property(一行实现)

直接用type动态创建带property的匿名类实例,每次访问属性时都会重新计算实时值:

# 创建别名实例
money_alias = type('', (), {
    'current': property(lambda _: my_dict[long_key_1][long_key_2]['users'][user]['one_more_long_key']['current_money'])
})()

# 使用时直接访问属性,无需括号
assert money_alias.current == 10

这个写法足够简洁,无需额外类定义,property会保证每次访问money_alias.current时都重新执行lambda表达式,获取最新值。

方案2:可读性优先的极简代理类

如果需要更清晰的命名,可编写一个超短的代理类:

class MoneyAlias:
    @property
    def current(self):
        return my_dict[long_key_1][long_key_2]['users'][user]['one_more_long_key']['current_money']

money_alias = MoneyAlias()

# 使用方式
assert money_alias.current == 10

代码量仅几行,远少于你提到的20行,同时可读性更强。

方案3:适配复杂链式调用场景

如果实际场景是类似get_current_money().attribute.method().attribute的链式调用,只需将整个逻辑封装到lambda中即可:

data_alias = type('', (), {
    'current_val': property(lambda _: get_current_money().attribute.method().attribute)
})()

assert data_alias.current_val == 10

同样能实现实时获取最新值的效果。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 16:21:51