1.基本类
最简单的类
class Super: #定义类
age=20
Sub=Super() #实例化类
print Sub.age
2.高级类
1.调用超类的构造器
class Super:
def __init__(self,x) #构造器
self.name=x
class Sub(Super):
def __init__(self,x,y):
Super.__init__(self,x) #调用超类的构造器
self.name2=y
I=Sub(1,2)
print I.name
print I.name2
2.继承方法的专有化
class Super:
def method(self):
print 'in Super.method'
class Sub(Super):
def method(self):
print 'Starting Sub.method'
Super.method(self)
print 'ending Sub.method'
x = Super()
x.method()
y=Sub()
y.method()
3.类接口技术
接口只是定义了一些方法,而没有去实现,多用于程序设计时,只是设计需要有什么样的功能,但是并没有实现任何功能,这些功能需要被另一个类(B)继承后,由 类B去实现其中的某个功能或全部功能。
class Super:
def delegate(self):
self.action() # 超类中没定义方法
class Provider(Super):
def action(self): # 子类中定义方法
print 'in Provider.action'
x = Provider()
x.delegate()
class Super:
def method(self):
print 'in Super.method'
class Sub(Super):
def method(self):
print 'Starting Sub.method'
Super.method(self)
print 'ending Sub.method'
x = Super()
x.method()
y=Sub()
y.method()
输出结果:
in Provider.action
总结:在Super类中定义delegate()方法,delegate中调用self.action,在Provider子类中实现action方法。子类调用父类的delegate方法时,实际是调用自己的action方法。。
4.抽象超类
class Super:
def delegate(self):
self.action() # 超类中没定义方法
class Provider(Super):
def action(self): # 子类中定义方法
print 'in Provider.action'
x = Provider()
x.delegate()
运行结果如下:
in Provider.action
在Super类中定义delegate()方法,delegate中调用self.action,在Provider子类中实现action方法。子类调用父类的delegate方法时,实际是调用自己的action方法。
经典的Demo:
class Super:
def method(self):
print 'in Super.method'
def delegate(self): //抽象超类
self.action()
class Inheritor(Super):
pass
class Repalcer(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 klass in (Inheritor,Repalcer,Extender): #超类的扩展类型
print '\n'+klass.__name__+'...'
klass().method()
print '\nProvider...'
x=Provider()
x.delegate()