Python学习笔记(十四)继承和多态

继承有什么好处?最大的好处是子类获得了父类的全部功能。

判断一个变量是否是某个类型可以用isinstance()判断:

>>>isinstance(a, list)

True

这就是多态真正的威力:调用方只管调用,不管细节

对扩展开放:允许新增Animal子类;

对修改封闭:不需要修改依赖Animal类型的run_twice()等函数。


动态语言的“鸭子类型”,它并不要求严格的继承体系,一个对象只要“看起来像鸭子,走起路来像鸭子”,那它就可以被看做是鸭子。


在评论区的一个串联整篇的例子

#定义一个父类一个子类

class Province(object):

    def __init__(self,proname):

        self.proname=proname

    def ps(self):

        print('I am in %s'%self.proname)


class City(Province):

    def __init__(self,proname,cityname):

        self.cityname=cityname 

        Province.__init__(self,proname)

    def ps1(self):

        print('I\'m in %s-%s' %(self.proname,self.cityname))

#定义一个独立的类

class Timer(object):

    def ps(self):

        print('我不属于Province类或其子类,但我有ps方法我同样可以被调用')

    def ps1(self):

        print('我不属于Province类或其子类,但我有ps1方法我同样可以被调用')

#定义一个函数

def f(x):

    x.ps()

    x.ps1()

#调用部分

f(City('上海','浦东'))

f(Timer())

返回结果I am in上海I'm in上海-浦东

我不属于Province类或其子类,但我有ps方法我同样可以被调用我不属于Province类火气子类,但我有ps1方法我同样可以被调用

你可能感兴趣的:(Python学习笔记(十四)继承和多态)