2016-07-28 51 views
-1

请看下面的例子:有没有办法将参数绑定到python中的函数变量?

class foo: 
    def __init__(self): 
     print ("Constructor") 
    def testMethod(self,val): 
     print ("Hello " + val) 
    def test(self): 
     ptr = self.testMethod("Joe") <---- Anyway instead of calling self.testMethod with parameter "Joe" I could simple bind the parameter Joe to a variable ? 
     ptr() 

k = foo() 
k.test() 

在把定义test是有可能,我可以创建调用时调用该方法self.testMethod与参数"Joe"变量?

+0

为什么现在这是一个downvote?无论如何,我可以改善这一点?没有任何线索的downvoting不是真的有生产力 –

+0

你的意思是:'def test(self,name):ptr = self.testMethod(name)'?然后你可以调用k.test(“Joe”) – marcanuy

+3

你的意思就像'from functools import partial',然后'self.callable = partial(self.testMethod,'Joe')'? –

回答

1

要么使用functools.partial() objectlambda表达式:

from functools import partial 

ptr = partial(self.testMethod, 'Joe') 

ptr = lambda: self.testMethod('Joe') 
+0

这就是我正在寻找的感谢。标记为答案 –

+0

实际上,您似乎标记了* other *答案。这完全是您的选择,但您的意见在这种情况下令人困惑:-) –

+0

对不起。谢谢你让我知道 –

1

你可以传递一个名字给构造(并将其存储在类的实例),这是随后的方法访问:

class Foo: 
    def __init__(self, name): 
     print("Constructor") 
     self.name = name 

    def testMethod(self): 
     print("Hello " + self.name) 

    def test(self): 
     self.testMethod() 

如下:

k = Foo("Joe") 
k.test()   # prints: Hello Joe 
+0

不是真的。我正在寻找绑定功能。我不想要任何其他方法。我刚刚发布的代码是一个简单的例子。 –

相关问题