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

2024-05-16 02:47:34 发布

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

我相信这是一个简单的问题,但我是个业余爱好者,所以我来了。你知道吗

尝试使用obdpython库与我的车辆通信。我有一个bluetooth 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而不是使用命令.查询(cmd)它的打印方式和我指定的完全一样。obd.commands.RPM所以我不明白为什么这样不行。你知道吗


Tags: import命令cmdfortimeosresponseconnection
2条回答

在你的问题中你说:

there's a problem with how I'm building the cmd variable

实际上,在你看来,cmd只是一个字符串。因此,如果您想要实际评估的态度,应该使用getattr

cmd = getattr(obd.commands,i)

eval()exec()都是不安全的,所以千万不要使用它们。你知道吗

尝试将分配给cmd的内容包装到eval()

cmd = eval("obd.commands." + i)

相关问题 更多 >