一,隐式继承:
当父类里定义了一个方法但未在子类中重新定义,则子类会全盘继承该方法。
二,显式覆盖:
当父类里定义了一个方法并在子类中定义了一个相同名字的方法,则此父类方法将被子类同名方法覆盖。
三,调用父类:
显示覆盖某方法后,如果还想调用父类同名方法,则使用super()函数。
super(currentclass,self).methed()
最常见的super()的用法是在基类的__init__()方法中使用,来查找父类的属性。通常这也是唯一可以进行这种操作的地方。
即其他时候不需要使用super()。
四,合成:
在初始化类时引入其他类实例。
class Other(object):
def override(self):
print "OTHER override()"
def implicit(self):
print "OTHER implicit()
def altered(self):
print "OTHER altered()"
class Child(object):
def __init__(self):
self.other = Other()
def implicit(self):
self.other.implicit()
def override(self):
print "CHILD override()"
def altered(self):
print "CHILD, BEFORE OTHER altered()"
self.other.altered()
print "CHILD, AFTER OTHER altered()"
现在学习了两种在一个类中调用另一个类实例的方法:
一个是将一个类的实例作为另一个类初始化方法 __init__()的参数传入(见上一节),
另一个是本节讲的合成,直接在__init__()方法中引入另一个类的实例。