父类:
1 class A(object): 2 def __init__(self, name): 3 self.name = name 4 print("父类name:", self.name) 5 6 def getName(self): 7 return '子类实例A :' + self.name
子类继承:子类不重写__init__,实例化子类时,会自动调用父类定义的__init__
1 class B(A): 2 def getName(self): 3 return 'B '+self.name 4 5 if __name__=='__main__': 6 b=B('hello') 7 print(b.getName())
执行结果:
父类name: hello
子类实例B :hello
但重写了__init__时,实例化子类,就不会调用父类已经定义的__init__
1 class A(object): 2 def __init__(self, name): 3 self.name = name 4 print("父类name:", self.name) 5 6 def getName(self): 7 return '子类实例A :' + self.name 8 9 10 class B(A): 11 def __init__(self, name): 12 print("子类的init实例") 13 self.name = name 14 15 def getName(self): 16 return '子类实例B :' + self.name 17 18 if __name__ == '__main__': 19 b = B('hello') 20 print(b.getName())
执行结果:
子类的init实例
子类实例B :hello
为了能使用或扩展父类的行为,最好显示调用父类的__init__方法
1 class A(object): 2 def __init__(self, name): 3 self.name = name 4 print("父类name:", self.name) 5 6 def getName(self): 7 return '子类实例A :' + self.name 8 9 10 class B(A): 11 def __init__(self, name): 12 super(B, self).__init__(name) 13 print("子类的init实例") 14 self.name = name 15 16 def getName(self): 17 return '子类实例B :' + self.name 18 19 if __name__ == '__main__': 20 b = B('hello') 21 print(b.getName())
执行结果
父类name: hello
子类的init实例
子类实例B :hello