我想在python中做这样的事情:
(lambda: ... some code ...).valueHandling(...some parameters)
也就是说,我希望使用名为function
的新方法扩展valueHandling
类型。
我尝试了不同的东西:
1)
def valueHandling(self):
...
function.valueHandling=valueHandling
2)
function.__class__.__dict__['valueHandling']=valueHandling
3)等
没有工作...... 有办法吗?要添加一个方法来运行,所有'lambdas'都可以响应该方法吗?
由于
答案 0 :(得分:0)
CPython不允许这样做:
TypeError: can't set attributes of built-in/extension type 'function'
(如果您尝试使用.__dict__
方法...)
TypeError: 'dictproxy' object does not support item assignment
这是因为这些类型是用C语言实现的,并且具有交易灵活性。
答案 1 :(得分:0)
您可以设置单个(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