Вы, безусловно, можете передать метод в качестве параметра функции в Python.В моем примере ниже я создал класс (MyClass
), который имеет два метода: isOdd
и filterArray
.Я также создал функцию isEven
вне MyClass
.filterArray
принимает два параметра - массив и функцию, которая возвращает True
или False
- и использует метод, переданный в качестве параметра для фильтрации массива.
Кроме того, вы можете передавать лямбда-функции какпараметр, который похож на создание функции на лету без необходимости писать объявление функции.
def isEven(num):
return num % 2 == 0
class MyClass:
def isOdd(self, num):
return not isEven(num)
def filterArray(self, arr, method):
return [item for item in arr if method(item)]
myArr = list(range(10)) # [0, 1, 2, ... 9]
myClass = MyClass()
print(myClass.filterArray(myArr, isEven))
print(myClass.filterArray(myArr, myClass.isOdd))
print(myClass.filterArray(myArr, lambda x: x % 3 == 0))
Вывод:
[0, 2, 4, 6, 8]
[1, 3, 5, 7, 9]
[0, 3, 6, 9]