【发布时间】:2014-08-31 13:57:03
【问题描述】:
是否可以将一个从头编写的函数传递给另一个函数或类实例化?
这就是我现在拥有的:
class Foo(Object):
def __init__(self, name, somefunction):
self.name = name
self.somefunction = somefunction
def afunction(param1, param2):
return param1 + param2
Bar = Foo("Something", afunction)
Bar.somefunction(2, 3)
#returns 5
我想知道是否可以不必事先声明afunction,而只需在实例化期间直接将代码作为参数写入somefunction。像这样?
class Foo(Object):
def __init__(self, name, somefunction):
self.name = name
self.somefunction = somefunction
Bar = Foo("Something", def afunction(param1, param2): return param1 + param2)
#OR
Bar = Foo("Something", Anonymousfunctiontechnique: return param1 + param2)
Bar.somefunction(2, 3)
#returns 5
而且,这不是 lambda 的工作!这些函数可能非常复杂,在它们内部调用哪个函数并带有多个参数。另外,我不应该能够在其他任何地方访问它(所以外面的声明似乎不起作用)。
这样的事情可能吗?如果是这样,怎么做?如果不是,那么做我想做的事情的最佳方法是什么?
谢谢!!!
【问题讨论】:
-
exec('\n'.join("def newfunction(param1, param2):", " return param1 + param2"))
-
如果它很复杂,为什么要将它塞进一行而不是使用
def语句?
标签: python function class instantiation anonymous