zoukankan      html  css  js  c++  java
  • 类的派生

    一、派生

    • 派生:子类中新定义的属性的这个过程叫做派生,并且需要记住子类在使用派生的属性时始终以自己的为准

    90-类的派生-基因遗传.jpg?x-oss-process=style/watermark

    1.1 派生方法一(类调用)

    • 指名道姓访问某一个类的函数:该方式与继承无关
    class OldboyPeople:
        """由于学生和老师都是人,因此人都有姓名、年龄、性别"""
        school = 'oldboy'
    
        def __init__(self, name, age, gender):
            self.name = name
            self.age = age
            self.gender = gender
    
    
    class OldboyStudent(OldboyPeople):
        """由于学生类没有独自的__init__()方法,因此不需要声明继承父类的__init__()方法,会自动继承"""
    
        def choose_course(self):
            print('%s is choosing course' % self.name)
    
    
    class OldboyTeacher(OldboyPeople):
        """由于老师类有独自的__init__()方法,因此需要声明继承父类的__init__()"""
    
        def __init__(self, name, age, gender, level):
            OldboyPeople.__init__(self, name, age, gender)
            self.level = level  # 派生
    
        def score(self, stu_obj, num):
            print('%s is scoring' % self.name)
            stu_obj.score = num
    
    
    stu1 = OldboyStudent('tank', 18, 'male')
    tea1 = OldboyTeacher('nick', 18, 'male', 10)
    
    print(stu1.__dict__)
    
    {'name': 'tank', 'age': 18, 'gender': 'male'}
    
    print(tea1.__dict__)
    
    {'name': 'nick', 'age': 18, 'gender': 'male', 'level': 10}
    

    1.2 派生方法二(super)

    • 严格以来继承属性查找关系

    • super()会得到一个特殊的对象,该对象就是专门用来访问父类中的属性的(按照继承的关系)

    • super().__init__(不用为self传值)

    • super的完整用法是super(自己的类名,self),在python2中需要写完整,而python3中可以简写为super()

    class OldboyPeople:
        school = 'oldboy'
    
        def __init__(self, name, age, sex):
            self.name = name
            self.age = age
            self.sex = sex
    
    
    class OldboyStudent(OldboyPeople):
        def __init__(self, name, age, sex, stu_id):
            # OldboyPeople.__init__(self,name,age,sex)
            # super(OldboyStudent, self).__init__(name, age, sex)
            super().__init__(name, age, sex)
            self.stu_id = stu_id
    
        def choose_course(self):
            print('%s is choosing course' % self.name)
    
    
    stu1 = OldboyStudent('tank', 19, 'male', 1)
    
    print(stu1.__dict__)
    
    {'name': 'tank', 'age': 19, 'sex': 'male', 'stu_id': 1}
  • 相关阅读:
    改了一下分辨率,Areo特效奇迹般的恢复了...
    此连接需要活动的Internet连接
    Apple Mac OS X每日一技巧026:Spotlight打开文件所在的文件夹
    WP7有约(八):在ListPicker控件的选择页面上播放铃声
    WP7有约(七):实现铃声设置的播放图标的效果
    WP7有约(五):回到主页
    WP7有约:一个应用的破蛋过程
    WP7有约(六):AppBarUtils使用指南
    IE与firefox事件处理
    C#试题
  • 原文地址:https://www.cnblogs.com/nickchen121/p/10987834.html
Copyright © 2011-2022 走看看