2011-02-18 97 views
0

您好我想打電話f('append','more','arguments',a=1,b=2)如何傳遞參數作爲模塊

但附加的方法是pyquery模塊的方法(函數)

所以arg[0]是我的方法

我想使

e.arg[0]('<div id="cool"></div>') run like e.append('<div id="cool"></div>') 

- 所以我想通過「追加」作爲參數

import pyquery 
    d = pq('<div id="guido"></div>') 
    d.append('<div id="cool"></div>') 
    str(d) 

    def f (*arg,**kargs): 
     e = pq('<div id="guido"></div>') 
     e.arg[0]('<div id="cool"></div>') # <== HERE 
     return str(e) 

    f('append','more','arguments',a=1,b=2) 

,使f( '追加', '多', '參數' 中,a = 1,B = 2)必須返回

'<div id="guido"><div id="cool"/></div>' 
+3

你的問題不清楚。你能改述並添加更多的上下文嗎? – 2011-02-18 16:55:56

+0

你能否改寫你的問題以明確放慢:(1)pyquery做了什麼,(2)你如何使用它,以及(3)你爲什麼試圖以這種方式使用它? – Karmastan 2011-02-18 17:09:59

回答

3

我建議不要在字符串中傳遞方法名稱,如果你可以避免它(改爲傳遞方法本身的引用),但是如果你不能,你想要的是getattr(),一個函數獲取屬性一個包含在一個字符串中的名字的對象。這將讓你獲得所需方法的參考,然後你可以像平常一樣調用它。

def f (*arg, **kargs): 
    e = pq('<div id="guido"></div>') 
    getattr(e, arg[0])('<div id="cool"></div>') 
    return str(e) 
0

通d.append作爲第一個參數。函數是第一類對象!