zoukankan      html  css  js  c++  java
  • 继承的应用和派生的概念引出

    #派生:子类中新定义的属性,子类在使用时始终以自己的为准
    # 先定义的子类,再从子类中提取相同的属性,放在父类中,子类再继承父类。
    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、指名道姓访问某一个类的函数:该方式与继承无关


    # class Foo:
    # def f1(self):
    # print('Foo.f1')
    #
    # def f2(self):
    # print('Foo.f2')
    # self.f1()
    #
    # class Bar(Foo):
    # def f1(self):
    # print('Bar.f1')
    #
    # #对象查找属性的顺序:对象自己-》对象的类-》父类-》父类。。。
    # obj=Bar()
    # obj.f2()
    查找的一个流程:调用Bar生成一个对象obj,obj查找属性f2,先在对象本身找,没找到,又到对象的类然后到父类Foo找,找到f2,执行f2,输出“Foo.f2”执行到self.f1

    然后self就是传入的obj,obj又从自身找,没有,在对象的类中找,找到了,执行,输出“Bar.f1”

    # '''
    # Foo.f2
    # Bar.f1
    # '''
  • 相关阅读:
    也谈一下关于兔子的问题
    关于sql函数返回表
    关于1000瓶水的问题
    WWF的疑问
    天干和地支
    在若干个整数中找到相加之和为某个整数的所有组合的算法
    输出一个数组的全排列
    新的博客, 新的里程
    学习搜索引擎心得(10.2511.25)
    下一个阶段(用C++重写Lucene的计划)
  • 原文地址:https://www.cnblogs.com/Roc-Atlantis/p/9231096.html
Copyright © 2011-2022 走看看