python - 使用变量作为类方法/函数的一部分

时间:2017-03-19 18:54:05

标签: python syntax

我确定这是一个简单的问题,但我是业余爱好,所以我在这里。

尝试使用obd python库与我的车辆进行通信。我有一个蓝牙OBDII适配器,它自己可以发送自述的基本用法部分中列出的单个命令并获得响应。

我的问题是我有一个我要发送的命令列表。我正在尝试使用for循环来遍历每个命令并在屏幕上打印响应。

import os
import time
import obd

def clear_Screen():
    os.system('cls' if os.name == 'nt' else 'clear')


connection = obd.OBD("COM7")
pids = [ 'RPM' , 'ENGINE_LOAD' , 'COOLANT_TEMP' , 'RUN_TIME' ]

try:
    while True:
        time.sleep(1)
        clear_Screen()
        for i in pids:
            cmd = "obd.commands." + i
            response = connection.query(cmd)
            print i , ": " , (response.value)

except KeyboardInterrupt:
    exit()

我是如何构建cmd变量的,因为我从每个查询得到的响应是该命令不受支持,但我知道它们是。

如果我打印cmd而不是尝试使用command.query(cmd),它的打印方式就像我指定的那样,即obd.commands.RPM,所以我不明白为什么这不起作用。< / p>

2 个答案:

答案 0 :(得分:2)

在你提出的问题中你说:

  

我是如何构建cmd变量

的问题

的确,以你的方式,cmd只是一个字符串。因此,如果您想要实际评估的态度,则应使用getattr代替:

cmd = getattr(obd.commands,i)

eval()exec()都不安全,所以你永远不要使用它们。

答案 1 :(得分:-2)

尝试在eval()

中包装您分配给cmd的内容
cmd = eval("obd.commands." + i)