Python 将一个方法传递给另一个方法

Python passing a method to another method

我想做的是创建一个时间轮询 method/mechanism,作为输入接收它需要的方法 运行 在时间循环内(来自其他 modules\classes 和可能有也可能没有输入参数本身),退出条件(True/False/String/Int)和超时 这是我创建的

def time_polling(polled_method,exit_condition,timer):
   elapsed_time = 0
   sleep_period = 10
   while elapsed_time<=int(timer):
      if polled_method == exit_condition:
         return True
      time.sleep(sleep_period)
      elapsed_time+=sleep_period
   return False

我是这样称呼它的:

timed_polling(lambda: validation_installation.ValidationInstallation.check_installed_product(),True,60)

问题是,如果我在没有 lambda 的情况下调用该方法,那么显然调用是在调用命令内部进行的,使用 lambda 似乎没有在 timed_polling 方法内部调用该方法。 我错过了什么?

为什么这么复杂?不需要 lambda。

timed_polling(lambda: validation_installation.ValidationInstallation.check_installed_product(),True,60)

应该只是

# note: no parentheses, pass function object itself
timed_polling(validation_installation.ValidationInstallation.check_installed_product,True,60)

然后在代码中这是错误的,因为 polled_method 是一个方法,需要调用它 now 所以:

  if polled_method == exit_condition:
     return True

应该是(加()调用):

  if polled_method() == exit_condition:
     return True

否则不调用该方法