在Python中向lambda添加方法

2024-10-04 09:23:11 发布

您现在位置:Python中文网/ 问答频道 /正文

我想在python中这样做:

(lambda: ... some code ...).valueHandling(...some parameters)

也就是说,我想用一个名为valueHandling的新方法扩展类型function。 我试过不同的方法,比如:

(一)

def valueHandling(self):
  ...

function.valueHandling=valueHandling

(二)

function.__class__.__dict__['valueHandling']=valueHandling

3)等

都没用。。。 有办法吗?向函数中添加一个方法,以便所有“lambda”都能响应该方法?你知道吗

谢谢


Tags: 方法lambda函数self类型defcodefunction
2条回答

CPython不允许这样:

TypeError: can't set attributes of built-in/extension type 'function'

(如果您尝试使用.__dict__方法…)

TypeError: 'dictproxy' object does not support item assignment

这是因为这些类型是用C语言实现的,以灵活性换取速度。你知道吗

您可以设置单个(function/lambda/etc…)对象的属性:

l = lambda x: x*2
def fun():
  return 1
l.f = fun
l.f()
1

您不能对所有函数执行此操作-必须手动将其添加到每个函数中。你知道吗

您可以编写一个短包装,然后mylambda(lambda x: ...)

def mylambda(x):
  x.f = fun
  return x

相关问题 更多 >