Пример
class Parent:
def foo(self):
print('parent')
class DerivedA(Parent):
def foo(self):
print('derived A')
class DerivedB(Parent):
def foo(self):
print('derived B')
def bar(passed_in_func):
temp = [DerivedA(), DerivedB()]
for derived in temp:
passed_in_func(derived)
bar(Parent.foo)
Выход:
parent
parent
Требуемый выход:
derived A
derived B
Есть ли способ вызвать функцию производного класса bar
со следующими ограничениями?
Существует несколько производных классов из Parent
bar()
не обязательно будет знать, какой из производных классов передан в
Вызывающий bar()
не будет знать, какую сигнатуру функции производного класса передать в
РЕДАКТИРОВАТЬ
Я знаю один способ сделать это, но я считаю это немного хакерским:
def bar(passed_in_func):
temp = [DerivedA(), DerivedB()]
for derived in temp:
getattr(derived, passed_in_func)()
bar('foo')