继承简介 | Python从入门到精通:高阶篇之二十九
方法的重写
定义一个类 Animal(动物)
这个类中需要两个方法:run() sleep()
定义一个Dog类,继承Animal
class Animal:
def run(self):
print('动物会跑~~~')
def sleep(self):
print('动物睡觉~~~')
class Dog(Animal):
def bark(self):
print('汪汪汪~~~')
def run(self):
print('狗跑~~~~')
创建一个Dog类的实例
d = Dog()
d.run()
执行结果:
通过结果,可以发现调用的是Dog中的方法。
如果在子类中如果有和父类同名的方法,则通过子类实例去调用方法时,会调用子类的方法而不是父类的方法,这个特点我们成为叫做方法的重写(覆盖,override)。
可以确保在继承父类方法之后,自身还可以做出简单的修改。
创建一个类:
class A(object):
def test(self):
print('AAA')
class B(A):
pass
class C(B):
pass
# 创建一个c的实例
c = C()
c.test()
执行结果:
我们对以上代码做出一点改变:
class A(object):
def test(self):
print('AAA')
class B(A):
pass
class C(B):
def test(self):
print('CCC')
# 创建一个c的实例
c = C()
c.test()
执行结果:
class A(object):
def test(self):
print('AAA')
class B(A):
def test(self):
print('BBB')
class C(B):
def test(self):
print('CCC')
# 创建一个c的实例
c = C()
c.test()
执行结果:
当我们调用一个对象的方法时,会优先去当前对象中寻找是否具有该方法,如果有则直接调用。如果没有,则去当前对象的父类中寻找,如果父类中有则直接调用父类中的方法,如果没有,则去父类的父类中寻找,以此类推,直到找到object,如果依然没有找到,则报错。
我们来做个修改:
c.hello()
执行结果:
配套视频课程,点击这里查看
获取更多资源请订阅Python学习站