基于变量的类属性(getattr)

2024-04-24 12:54:44 发布

您现在位置:Python中文网/ 问答频道 /正文

我很难使用变量(最终是字典)来使用getattr动态组合和访问类属性:

from gpiozero import PiStop

lights = PiStop('A+')

# working call: lights.red.on()

var = 'red.on'
getattr(lights(), var) # doesn't work - error

我找不到正确的语法。。。你知道吗


Tags: fromimport字典属性onvar动态red
1条回答
网友
1楼 · 发布于 2024-04-24 12:54:44

您有两个被访问的属性;lights.red是一个这样的属性,然后在该访问的结果上应用另一个属性访问,所以<result>.on。你知道吗

您需要使用单独的getattr()调用来实现相同的功能。你知道吗

您可以在var中的'.'点上拆分,并在循环中分别应用每个名称:

result = lights()
for name in var.split('.'):
    result = getattr(result, name)

这允许将var设置为任意数量的嵌套属性。你知道吗

相关问题 更多 >