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方法我同样可以被调用

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

友情链接更多精彩内容