类接口技术
扩展只是一种同超类接口的方式。下面所展示的sPecial'ze.Py文件定义了多个类,示范了一些常用技巧。
Super
定义一个method函数以及一个delegate函数.
Inheritor
没有提供任何新的变量名,因此会获得Super中定义的一切内容。
Replacer
用自己的版本授盖Super的method.
EXtender
覆盖并回调默认method,从而定制Super的method.
Providel
实现Super的delegate方法预期的action方法。
研究这些子类来了解它们定制的共同的超类的不同途径。下面就是这个文件。
#!/usr/bin/env python
# -*- coding:utf-8 -*-
class Super:
def method(self):
print('in Super.method')
def delegate(self):
self.action() # 未被定义
class Inheritor(Super):
pass
class Replacer(Super):
def method(self): # 完全代替
print("in Replacer.method")
class Extender(Super):
def method(self): # 方法扩展
print('starting Extender.method')
Super.method(self)
print('ending Extender.method')
class Provider(Super):
def action(self): # 补充所需方法
print('in Provider.action')
if __name__ == '__main__':
for k in (Inheritor, Replacer, Extender):
print("\n" + k.__name__ + "...")
k().method()
print("---Provider-----------------------")
x = Provider()
x.delegate()
运行结果:
Inheritor...
in Super.method
Replacer...
in Replacer.method
Extender...
starting Extender.method
in Super.method
ending Extender.method
---Provider-----------------------
in Provider.action