【问题标题】:How to bind a constant parameter in Python?如何在 Python 中绑定常量参数?
【发布时间】:2023-03-07 07:55:02
【问题描述】:

我有一个类似于

的课程
class C:
    def __init__(self, a):
        self.a = a
    def noParam(self):
        return self.a
    def withParam(self, b)
        return self.a + b
instC = C(5.)

我需要将类的特定实例的方法作为参数传递。通过instC.noParam 工作正常,但我如何通过instC.withParamb 总是等于说239?谢谢。

【问题讨论】:

    标签: python


    【解决方案1】:

    可以使用lambda函数绑定参数:

    meth = lambda: instC.withParam(239)

    【讨论】:

      【解决方案2】:

      你想使用functools.partial:

      import functools
      
      instC = C(5.)
      meth = functools.partial(instC.withParam, 239)
      

      然后您可以传递此方法(与您的实例和值 239 绑定):

      do_thing(meth)
      

      【讨论】:

      • 这是最好的方法,但也可以提及lambda -- 它既是一种替代方法,也有助于解释partial 正在做什么。
      • @Francis:为什么这个比 lambda 好?
      • 抱歉应该先用谷歌搜索 (stackoverflow.com/questions/3252228/…)
      • 我更喜欢 lambda 而不是 functools.partial,因为 lambda 更容易调试。
      猜你喜欢
      • 1970-01-01
      • 2011-03-21
      • 1970-01-01
      • 1970-01-01
      • 2015-07-07
      • 2011-11-02
      • 2013-07-25
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多