Передача активного метода в качестве аргумента в другом методе python

#python #class #methods

Вопрос:

Я видел различные вопросы, которые касаются одного из них, но никогда не встречал, чтобы метод, передаваемый в качестве аргумента, активно использовался self . Вот MWE (или, точнее, MNWE):

 class Object:  def __init__(self, number1, number2):  self.value1 = number1  self.value2 = number2    def method1(self):  return self.value1    def method2(self):  return self.value2    def super_method(self, method):  return 2 * self.method()   example = Object(4, 6) example.super_method(method1)  

Комментарии:

1. Можете ли вы уточнить, что вы думаете method1 об example.super_method(method1) этом? Вы намерены это сделать Object.method1 или example.method1 , может быть?

Ответ №1:

super_method Просто получает метод и вызывает его, и вам нужно передать метод объекта

 class Object:  # ...  def super_method(self, method):  return 2 * method()  example = Object(4, 6) print(example.super_method(example.method1)) # 8 print(example.super_method(example.method2)) # 12  

Если вы хотите передать метод без example ссылки, это будет

 class Object:  # ...  def super_method(self, method):  return 2 * method(self)  example = Object(4, 6) print(example.super_method(Object.method1)) # 8 print(example.super_method(Object.method2)) # 12