在 python 27 中,如何将带参数的方法传递给 class 的 __init__()?
In python 27 how do I pass a method with arguments to a class's __init__()?
我正在尝试将一个参数传递给一个我想从 class 的实例调用的函数,但我不知道该怎么做。如果我不传递任何参数,我可以做得很好,但我一开始传递参数,它就在我面前爆炸了。
这是我想要做的一个例子。
class foo:
def __init__(self, use_function=None):
self.use_function = use_function
def call(self):
self.use_function()
def bar(number):
print 'number is ' + str(number)
myObj = foo( use_function=bar(15) )
myObj.call()
你不能传递参数,因为你的__init__
函数不接受参数,它只接受函数。如果您传递 bar(15)
,它会在 __init__
之前调用 bar
,并且 __init__
会收到 return bar(15)
的值(在本例中为 None)。
如果你想让__init__
调用bar(15)
,你可以foo( use_function=lambda: bar(15) )
。这将传递给 __init__
一个零参数函数,该函数在调用时将调用 bar(15)
.
class foo:
def __init__(self, use_function=None,params=None):
self.use_function = use_function
self.params = params
def call(self):
self.use_function(self.params)
def bar(number):
print 'number is ' + str(number)
myObj = foo( use_function=bar, params=15 )
myObj.call()
class foo:
def __init__(self, use_function=None):
self.use_function = use_function
def call(self):
eval(self.use_function)
def bar(number):
print 'number is ' + str(number)
myObj = foo( use_function="bar(15)" )
myObj.call()
如果要给函数传参,当给init
传函数的时候,可以传一个字符串,比如bar(15)
,要调用函数的地方,用内置函数 eval
您可以 return 您在 bar() 中打印的值
class foo:
def __init__(self,use_func=None):
self.u = use_func
def call(self):
print self.u
def bar(n):
return n
myobj = foo(use_func=bar(15))
myobj.call()
都是因为你没有从 bar() 传递任何东西,myobj 得到 None
我正在尝试将一个参数传递给一个我想从 class 的实例调用的函数,但我不知道该怎么做。如果我不传递任何参数,我可以做得很好,但我一开始传递参数,它就在我面前爆炸了。
这是我想要做的一个例子。
class foo:
def __init__(self, use_function=None):
self.use_function = use_function
def call(self):
self.use_function()
def bar(number):
print 'number is ' + str(number)
myObj = foo( use_function=bar(15) )
myObj.call()
你不能传递参数,因为你的__init__
函数不接受参数,它只接受函数。如果您传递 bar(15)
,它会在 __init__
之前调用 bar
,并且 __init__
会收到 return bar(15)
的值(在本例中为 None)。
如果你想让__init__
调用bar(15)
,你可以foo( use_function=lambda: bar(15) )
。这将传递给 __init__
一个零参数函数,该函数在调用时将调用 bar(15)
.
class foo:
def __init__(self, use_function=None,params=None):
self.use_function = use_function
self.params = params
def call(self):
self.use_function(self.params)
def bar(number):
print 'number is ' + str(number)
myObj = foo( use_function=bar, params=15 )
myObj.call()
class foo:
def __init__(self, use_function=None):
self.use_function = use_function
def call(self):
eval(self.use_function)
def bar(number):
print 'number is ' + str(number)
myObj = foo( use_function="bar(15)" )
myObj.call()
如果要给函数传参,当给init
传函数的时候,可以传一个字符串,比如bar(15)
,要调用函数的地方,用内置函数 eval
您可以 return 您在 bar() 中打印的值
class foo:
def __init__(self,use_func=None):
self.u = use_func
def call(self):
print self.u
def bar(n):
return n
myobj = foo(use_func=bar(15))
myobj.call()
都是因为你没有从 bar() 传递任何东西,myobj 得到 None