Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/356.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 有没有像“lambda x,y:x.custom_method(y)”这样的标准函数代码?_Python - Fatal编程技术网

Python 有没有像“lambda x,y:x.custom_method(y)”这样的标准函数代码?

Python 有没有像“lambda x,y:x.custom_method(y)”这样的标准函数代码?,python,Python,我知道我可以使用operator module中的函数调用magic方法,例如: operator.add(a, b) 等于 a.__add__(b) 是否有一个标准函数用于调用诸如operator.methodcaller之类的自定义方法,但在调用时也接受方法参数? 目前我有如下代码: def methodapply(name): """Apply a custom method. Usage: methodapply('some')(a, *args,

我知道我可以使用operator module中的函数调用magic方法,例如:

operator.add(a, b)
等于

a.__add__(b)
是否有一个标准函数用于调用诸如operator.methodcaller之类的自定义方法,但在调用时也接受方法参数? 目前我有如下代码:

def methodapply(name):
    """Apply a custom method.

    Usage:
        methodapply('some')(a, *args, **kwargs) => a.some(*args, **kwargs)

    """
    def func(instance, *args, **kwargs):
        return getattr(instance, name)(*args, **kwargs)
    func.__doc__ = """Call {!r} instance method""".format(name)
    return func
是的,它仍然被称为:

返回一个可调用对象,该对象调用其操作数上的方法名。如果提供了其他参数和/或关键字参数,那么它们也将提供给该方法。例如:

operator.add(a, b)
在f=methodcaller'name'之后,调用fb返回b.name。 在f=methodcaller'name',foo',bar=1之后,调用fb返回b.name'foo',bar=1。 这会使链条稍微偏离您想要的方向;您需要提前告诉methodcaller要传入哪些参数

没有可调用的标准库可以构建同时接受实例和参数的方法调用方

但是,如果要应用此方法的对象序列是同质的,则可以使用unbound方法;未绑定方法将self作为第一个参数。所以这是可行的:

from itertools import 
map(str.split, list_of_strings, [','] * len(list_of_strings), range(len(list_of_strings)))
它将以不断增长的限制拆分逗号上的字符串;每次map调用str.split一个未绑定的方法时,它都会传入一个str对象(从字符串列表、一个“,”字符串和一个从0到字符串列表的整数参数-1)。

是的,它仍然被调用:

返回一个可调用对象,该对象调用其操作数上的方法名。如果提供了其他参数和/或关键字参数,那么它们也将提供给该方法。例如:

operator.add(a, b)
在f=methodcaller'name'之后,调用fb返回b.name。 在f=methodcaller'name',foo',bar=1之后,调用fb返回b.name'foo',bar=1。 这会使链条稍微偏离您想要的方向;您需要提前告诉methodcaller要传入哪些参数

没有可调用的标准库可以构建同时接受实例和参数的方法调用方

但是,如果要应用此方法的对象序列是同质的,则可以使用unbound方法;未绑定方法将self作为第一个参数。所以这是可行的:

from itertools import 
map(str.split, list_of_strings, [','] * len(list_of_strings), range(len(list_of_strings)))

它将以不断增长的限制拆分逗号上的字符串;每次map调用str.split一个未绑定的方法时,它都会传入一个str对象(从字符串列表中的字符串列表)、一个“,”字符串和一个从0到字符串列表中的整数参数-1。

对我不起作用:TypeError:methodcaller需要1个参数,得到3个。@ecatmur:不,methodcaller对象之后不接受参数,这会把他们带到最前面。所以这并不能回答问题。跟上你的编辑有点棘手!仅当对象为已知类型时,使用unbound方法才有效;它不适用于重写或duck键入。@ecatmur:hrm,编辑错误,句子中缺少一部分,说明unbound方法仅适用于同质列表。不适用于我:TypeError:methodcaller需要1个参数,得到3个。@ecatmur:no,methodcaller对象之后不接受参数,这会把他们带到最前面。所以这并不能回答问题。跟上你的编辑有点棘手!仅当对象为已知类型时,使用unbound方法才有效;它不能用于重写或duck键入。@ecatmur:hrm,编辑错误,句子中缺少一部分,说明unbound方法仅适用于同质列表。