2011-02-18 114 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作为第一个参数。函数是第一类对象!