2012-05-12 105 views
3

我是python的新手。我正在使用Python 3.1.2我必须通过我的代码与xml-rpc服务器进行通信。从我的代码中,我打电话给client.py,它将连接到服务器以获取来自服务器的评论列表。传递多个参数的字符串

工作代码:

class xmlrpc: 
    def connect(self, webaddr): 
     self.server = ServerProxy(webaddr) 

清单的方法: -

my_list = self.server.tests.getTests() 

上述方法工作,但是,而我约束来设定tests.getTests()成单个cmd_str像下面

my_list = self.server.cmd_str 

在这种情况下,cmd_str作为一个字符串本身发送到client.py,而不是其他人。任何人都可以帮助我如何实现这一目标吗?

+0

我有一个真的很难搞清楚你的​​要求。你能改述“在这种情况下,cmd_str发送到client.py作为一个字符串本身,而不是像其他人”或添加一些例子? – garnertb

+0

抱歉。我想说的是,在我的程序中,我已经将cmd_str硬编码为tests.getTests()并将它传递给client.py ..但是,当client.py读取它时,它认为cmd_str是一个值而不是tests.getTests()。我如何传递cmd_str的值? – user1390672

+0

如果我把它放在一个简单的方式,如何让打印执行?类服务器: 高清isRunning(): 打印( “你是,将isRunning内”) cmdStr = “isRunning()” 测试= Server.cmdStr – user1390672

回答

1

如果我理解你是对的,你想调用一个对象的方法,但是你事先不知道这个方法,你只需要把它放在一个字符串中。那是对的吗?

class Server(object): 
    def isRunning(self): 
     print("you are inside the isRunning") 

my_server = Server() 
cmd_str = "isRunning" 
my_function = my_server.__getattribute__(cmd_str) 
my_function() 

你,将isRunning内

注意,我让从objectServer类继承,使之成为所谓的新式类,而且isRunning得到一个说法self,它告诉python这应该是一个实例方法。 my_server.__getattribute__将获得对您所调用的绑定函数my_server.isRunning的引用。

你也可以做这样的事情:

function_map = { 
    'check_if_running': my_server.isRunning 
} 
cmd_str = 'check_if_running' 
my_function = function_map[cmd_str] 
my_function() 

,所以你不必叫不出名的功能,你的命令字符串被称为(Python中,方法的命名惯例通常是like_this ,而不是likeThis

0

如果我理解它是正确的,你需要的是调用一个方法,你只有一个字符串中的名称,而不是对方法本身的引用。

您可以使用getattr函数来获取您要调用的方法的引用。

在你的榜样使用它:

cmdStr = "isRunning" 
func = getattr(Server, cmdStr) 
test = func() 
相关问题