Python 3.x 使用命令行参数调用类方法

Python 3.x 使用命令行参数调用类方法,python-3.x,function,class,methods,arguments,Python 3.x,Function,Class,Methods,Arguments,如果我的术语都错了,我会道歉;我还在学习Python的基础知识。我无法用谷歌搜索这个问题,可能在很大程度上是因为我不懂术语 所以。我在.py脚本中构建了一个类,其中包含许多方法/函数。为了使这一点更加简单,我想从命令行参数调用它们。我不知道如何解释它,也找不到无水的例子,所以我将尝试演示它: 例如,mute_on就是我想要调用的函数。我使用参数中的函数/方法运行脚本,如下所示: python3 ./myscript.py mute_on 我假设我们导入sys(?),定义类和函数,并从类中创建相

如果我的术语都错了,我会道歉;我还在学习Python的基础知识。我无法用谷歌搜索这个问题,可能在很大程度上是因为我不懂术语

所以。我在.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]}()
有什么想法吗,善良的人们?我已经被自动引用,但我不知道这些信息在这里如何帮助我

我已尝试设置cmnd='tun_off',但以下操作失败了

getattr(mypioneer, str(cmnd))
getattr(mypioneer, cmnd) 

谢谢

这个答案似乎有点基本,但我不能抱怨它的功效

mypioneer = PioneerDevice('Pioneer AVR', '192.168.2.89', 8102, 10)     
exp = 'mypioneer.' + sys.argv[1] + '()'
print('Executing: ' + exp  )
exec(exp)
我放弃了loking以获得一个优雅的答案,只是基于commandline参数构造了一个我想要执行的字符串(exp)。很好。。Home Assistant可以使用相同的脚本在我的Pioneer AVR上调用50个telnet控件。

可能重复的