有没有办法将参数绑定到python中的函数变量?

时间:2016-07-28 22:02:22

标签: 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"

2 个答案:

答案 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

答案 1 :(得分:1)

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

from functools import partial

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

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