我努力使用变量(最终字典)来使用getattr:
动态组合和访问类属性from gpiozero import PiStop
lights = PiStop('A+')
# working call: lights.red.on()
var = 'red.on'
getattr(lights(), var) # doesn't work - error
我找不到合适的语法......
答案 0 :(得分:1)
您正在访问两个属性; lights.red
是一个这样的属性,然后在该访问的结果上,您应用另一个属性访问权限,<result>.on
。
您需要使用单独的getattr()
调用来实现相同的目标。
您可以拆分'.'
中的var
点并分别应用每个名称:
result = lights()
for name in var.split('.'):
result = getattr(result, name)
这允许将var
设置为任意数量的嵌套属性。