基于变量的类属性(getattr)

时间:2018-01-15 16:58:15

标签: python raspberry-pi gpio

我努力使用变量(最终字典)来使用getattr:

动态组合和访问类属性
from gpiozero import PiStop

lights = PiStop('A+')

# working call: lights.red.on()

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

我找不到合适的语法......

1 个答案:

答案 0 :(得分:1)

您正在访问两个属性; lights.red一个这样的属性,然后在该访问的结果上,您应用另一个属性访问权限,<result>.on

您需要使用单独的getattr()调用来实现相同的目标。

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

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

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

相关问题