Python中的接口编程?
在Python
的父类中,我怎么能调用在子类中被重写的函数呢?
class A:
@staticmethod
def interfaceBasedMethod():
print "Want to delegate to overriding method in subclass"
@staticmethod
def a():
interfaceBasedMethod() # <-- I know this causes error. But here
# I want to call the overridden method in subclass.
class B(A):
@staticmethod
def interfaceBasedMethod():
print "Class B processes."
if __name__ == "__main__":
b=B
b.a()
理想的输出:
Class B processes.
谷歌搜索并没有返回关于Python中基于接口编程的页面,虽然在Java等语言中这应该是很常见的。谢谢!
2 个回答
2
不谈风格问题,建议使用classmethod而不是staticmethod。因为classmethod会把正在使用的类传递进来。
class A:
@classmethod
def interfaceBasedMethod(cls):
print "Want to delegate to overriding method in subclass"
@classmethod
def a(cls):
cls.interfaceBasedMethod()
class B(A):
@classmethod
def interfaceBasedMethod(cls):
print "Class B processes."
if __name__ == "__main__":
b=B
b.a()