示例
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
有多个来自父级的派生类
bar()
不一定知道传入哪个派生类
bar()
的调用者将不知道要传入哪个派生类函数签名
编辑
我知道一种方法,但我觉得有点老套:
def bar(passed_in_func):
temp = [DerivedA(), DerivedB()]
for derived in temp:
getattr(derived, passed_in_func)()
bar('foo')
下面是一种通用的方法,它适用于直接子类:
输出:
相关问题 更多 >
编程相关推荐