zoukankan      html  css  js  c++  java
  • 从零开始的Python学习Episode 19——面向对象(2)

    面向对象之继承

    继承是一种创建新类的方式,新建的类可以继承一个或多个父类(python支持多继承),父类又可称

    为基类或超类,新建的类称为派生类或子类。

    子类会“”遗传”父类的属性,从而解决代码重用问题。

    单继承与多继承

    class Par1:
        pass
    class Par2:
        pass
    class ch1(Par1):#单继承
        pass
    class ch2(Par1,Par2):#多继承
        pass

    派生中方法调用的规则

    子类也可以添加自己新的属性或者在自己这里重新定义这些属性(不会影响到父类),需要注意的是,一旦重新定义了自己的属性且与父类重名,那么调用新增的属性时,就以自己为准了。

    但在多继承中情况就会稍微有点复杂,因为如果两个父类中有相同名字的方法的话,子类会调用哪一个?

    试验:

    class Par1():
        def f1(self):
            print('this is par1.f1')
    class Par2():
        def f1(self):
            print('this is par2.f1')
    class ch2(Par1,Par2):
        pass
    
    obj = ch2()
    obj.f1()
    #输出:this is par1.f1
    class Par1():
        def f2(self):
            print('this is par1.f1')
    class Par2():
        def f1(self):
            print('this is par2.f1')
    class ch2(Par1,Par2):
        pass
    
    obj = ch2()
    obj.f1()
    #输出:this is par2.f1

    看来是优先在第一个父类中找,找不到再找下一个。

    class Grandpar:
        def f1(self):
            print('this is grandpar.f1')
    class Par1(Grandpar):
        def f2(self):
            print('this is par1.f1')
    class Par2(Grandpar):
        def f1(self):
            print('this is par2.f1')
    class ch2(Par1,Par2):
        pass
    
    obj = ch2()
    obj.f1()
    #输出:this is par2.f1
    class Grandpar:
        def f1(self):
            print('this is grandpar.f1')
    class Par1(Grandpar):
        def f2(self):
            print('this is par1.f1')
    class Par2(Grandpar):
        def f2(self):
            print('this is par2.f1')
    class ch2(Par1,Par2):
        pass
    
    obj = ch2()
    obj.f1()
    #输出:this is grandpar.f1

    当父类还有父类的时候,会先在Par1,Par2中找,找不到再从他们的父类中找。

    如果在子类中需要使用父类中已经被重写的方法,则可以通过

    类名.方法名()

    的方法调用。

  • 相关阅读:
    cocos日记
    Android 开发经验
    vbs自学备份
    C# 如何在winform中嵌入Excel,内嵌Excel,word
    win7 64位在线编辑dsoframer控件的安装和使用配置
    C# 正则表达式 最全的验证类
    在 Range 对象中,Min (14)必须小于或等于 max (-1)。
    winform Form窗体和UserControl用户空间嵌入Panel容器并填充
    C# Winform防止闪频和再次运行
    Base64编码解码
  • 原文地址:https://www.cnblogs.com/smilepup-hhr/p/10341886.html
Copyright © 2011-2022 走看看