如何将参数作为模块的方法传递

时间:2011-02-18 16:53:21

标签: python argument-passing

您好我想要致电f('append','more','arguments',a=1,b=2)

但是append是pyquery module

的方法(函数)

所以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('append','more','arguments',a = 1,b = 2)必须返回

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

2 个答案:

答案 0 :(得分:3)

我建议不要在字符串中传递方法名称,如果你可以避免它(改为传递对方法本身的引用),但是如果你不能,你想要的是getattr(),一个得到的函数对象的属性,包含在字符串中的名称。这将让您获得所需方法的参考,然后您可以照常调用它。

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

答案 1 :(得分:0)

将d.append作为第一个参数传递。函数是第一类对象!