Python笔记(三)继承和多态、动态语言

时间:2022-01-20 10:14:20

一、继承

先定义一个A类

class A(object):
def fun(self):
print "Run A fun()"

在定义一个B类

class B(A):
pass

此时,B也有A类的函数"fun()", 这个定义B类方式称为继承

class B(A):
fun(self):
print "Run B fun()"

通过重新定义"fun()", B覆盖了从A类中继承的函数fun()

二、多态

当一个方法的传入参数是个一个类,且方法的执行调用了该传入参数类的方法时,传入参数是该类的子类并不会影响方法的正常执行;

def test(A):
A.fun()

调用test方法,传入参数为A类

>>>test(A())
Run A fun()

再次调用test方法,传入参数为A的子类B

>>>test(B())
Run B fun()

三、注 :动态语言

若方法的传入参数是object,那么传入的这个参数类有“fun()”这个函数,都可以被正常运行。由于python是动态语言,只要传参数的类有该方法就可以运行。动态运用调用实例方法,不检查类型,只要方法存在,参数正确,就可以调用。

def test(object):
object.fun()