2009-05-23 66 views
1

我正在寫一個類,我打算用它來創建子程序,構造如下:動態功能調用Python的使用XMLRPC

def __init__(self,menuText,RPC_params,RPC_call): 
    #Treat the params 
    #Call the given RPC_call with the treated params 

的問題是,我想打電話模式「功能rpc.serve。(function name here)(params)「, 其中rpc是一個serverProxy對象,我用它來調用XMLRPC函數和serve.-function name-是我在XMLRPC上調用的方法-服務器。

我看過Calling a function from a string with the function's name in Python,但看到我的serverProxy對象不知道它具有哪些「遠程屬性」,我不能使用getattr()函數來檢索該方法。

我見過一個例子,通過創建一個字典來調用給定的函數,但是沒有辦法通過創建函數調用來創建函數,因爲您會創建一個字符串? 像運行一個字符串作爲一個函數?

+0

爲什麼要這種模式?爲什麼不rpc.functionName(params)? – 2009-05-23 11:55:02

+0

如果你的意思是爲什麼我添加「服務」,它只是爲了服務器上的功能的邏輯分組,並沒有什麼功能。 – Duveit 2009-05-23 13:11:11

回答

2

可以使用getattr從服務器代理獲取函數名,所以調用這樣的功能將工作:

getattr(rpc, function_name)(*params)