zoukankan      html  css  js  c++  java
  • 继承与派生, 继承的应用

    一,什么是继承?

    继承是一种新建类的方式,新建的类称为子类,被继承的类称为父类。

    继承的特性是:子类会遗传父类的属性。

    强调:继承是类与类之间的关系

    二,为什么用继承?

    继承的好处就是可以减少代码的冗余

    3、如何用继承
    在python中支持一个类同时继承多个父类
    在python3中
    如果一个类没有继承任何类,那默认继承object类
    在python2中:
    如果一个类没有继承任何类,不会继承object类

    新式类
    但凡继承了object的类以及该类的子类,都是新式类
    经典类
    没有继承object的类以及该类的子类,都是经典类

    在python3中都是新式类,只有在python2中才区别新式类与经典类

    新式类vs经典类?

    '''
    class Parent1(object):
    pass

    class Parent2(object):
    pass

    class Sub1(Parent1,Parent2):
    pass

    # print(Sub1.__bases__)
    print(Parent1.__bases__)
    print(Parent2.__bases__)


    继承的应用:

    注意:
    派生:子类中新定义的属性,子类再使用时始终以自己的为准。
    继承父类,可以在父类里把子类里相似的独有属性给摘出来,然后让子类继承使用。

    对象查找属性的顺序:对象自己---》对象的类-----》父类-----》父类----》

    #派生:子类中新定义的属性,子类在使用时始终以自己的为准
    class OldboyPeople: #父类
    school = 'oldboy'
    def __init__(self,name,age,sex): #把子类中属性相似的拿出来。
    self.name = name #tea1.name='egon'
    self.age = age #tea1.age=18
    self.sex = sex #tea1.sex='male'



    class OldboyStudent(OldboyPeople):
    def choose_course(self): #学生里面的独有属性已经被拿出来了,所以不用写了。直接继承父类的。
    print('%s is choosing course' %self.name)


    class OldboyTeacher(OldboyPeople):
    # tea1,'egon',18,'male',10
    def __init__(self,name,age,sex,level):
    # self.name=name
    # self.age=age
    # self.sex=sex
    OldboyPeople.__init__(self,name,age,sex)
    self.level=level

    def score(self,stu_obj,num):
    print('%s is scoring' %self.name)
    stu_obj.score=num

    stu1=OldboyStudent('耗哥',18,'male')
    tea1=OldboyTeacher('egon',18,'male',10)

    #对象查找属性的顺序:对象自己-》对象的类-》父类-》父类。。。
    # print(stu1.school)
    # print(tea1.school)
    # print(stu1.__dict__)
    # print(tea1.__dict__)

    tea1.score(stu1,99)

    print(stu1.__dict__)


    # 在子类派生出的新功能中重用父类功能的方式有两种:
    #1、指名道姓访问某一个类的函数:该方式与继承无关




  • 相关阅读:
    ssh-keygen的使用方法(无密码访问)
    ubuntu solute two different terminals cmd
    ubuntu 查看系统是32位还是64位
    pyplot 绘图与可视化
    python 正则表达式的处理
    python&pandas 与mysql 连接
    Ubuntu 11.10 H3C iNode 客户端安装
    Vijos1055(极大子矩阵)
    Vijos1055(极大子矩阵)
    luoguP2701 [USACO5.3]巨大的牛棚Big Barn(极大子矩阵)
  • 原文地址:https://www.cnblogs.com/fxc-520520/p/9230081.html
Copyright © 2011-2022 走看看