2024-04-24 12:54:44 发布
网友
我很难使用变量(最终是字典)来使用getattr动态组合和访问类属性:
from gpiozero import PiStop lights = PiStop('A+') # working call: lights.red.on() var = 'red.on' getattr(lights(), var) # doesn't work - error
我找不到正确的语法。。。你知道吗
您有两个被访问的属性;lights.red是一个这样的属性,然后在该访问的结果上应用另一个属性访问,所以<result>.on。你知道吗
lights.red
<result>.on
您需要使用单独的getattr()调用来实现相同的功能。你知道吗
getattr()
您可以在var中的'.'点上拆分,并在循环中分别应用每个名称:
var
'.'
result = lights() for name in var.split('.'): result = getattr(result, name)
这允许将var设置为任意数量的嵌套属性。你知道吗
您有两个被访问的属性;
lights.red
是一个这样的属性,然后在该访问的结果上应用另一个属性访问,所以<result>.on
。你知道吗您需要使用单独的
getattr()
调用来实现相同的功能。你知道吗您可以在
var
中的'.'
点上拆分,并在循环中分别应用每个名称:这允许将
var
设置为任意数量的嵌套属性。你知道吗相关问题 更多 >
编程相关推荐