很抱歉,我的用语全都错了;我仍在学习Python的基础知识。我一直无法通过Google搜索此问题,可能在很大程度上是因为我不知道该术语。
所以。我已经在.py脚本中建立了带有方法/功能的类的类。为了使此操作简单易行,我想从命令行参数调用它们。我不知道如何解释它,也找不到合适的例子,所以我将尝试演示它:
例如,将 mute_on 作为我要调用的函数。我在参数中使用函数/方法运行脚本,例如:
python3 ./myscript.py mute_on
我假设我们要导入sys(?),定义类和函数,并从该类创建相关对象:
import sys
class TelnetAVR(PioneerDevice):
def mute_on(self, mute):
self.telnet_command("MO")
mypioneer = PioneerDevice('Pioneer AVR', '192.168.2.89', 8102, 10)
...最后,我希望命令行参数调用方法/函数-而不是像这样显式调用它:
mypioneer.mute_volume()
..我想使用arg( sys.argv [1] )动态调用该函数,例如:
mypioneer.{sys.argv[1]}()
任何想法,好心的人?我被自动引用为What is getattr() exactly and how do I use it?,但是我不知道这些信息如何在这里为我提供帮助。
我尝试设置 cmnd ='turn_off',然后以下操作失败...;
getattr(mypioneer, str(cmnd))
getattr(mypioneer, cmnd)
谢谢!
答案 0 :(得分:0)
这个答案似乎有点基础,但是我不能抱怨它的功效;
mypioneer = PioneerDevice('Pioneer AVR', '192.168.2.89', 8102, 10)
exp = 'mypioneer.' + sys.argv[1] + '()'
print('Executing: ' + exp )
exec(exp)
我放弃了寻求一个优美答案的选择,只是根据命令行参数构造了一个我想执行(exp)的字符串。效果很好。Home Assistant可以使用相同的脚本在我的Pioneer AVR上调用50个telnet控件。