美文网首页ITS·黑客
Python学习笔记(十四)继承和多态

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

作者: 木凛 | 来源:发表于2017-05-05 22:41 被阅读7次

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

    判断一个变量是否是某个类型可以用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学习笔记(十四)继承和多态

        本文链接:https://www.haomeiwen.com/subject/lhastxtx.html