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

    类的派生

    • 派生:子类中新定义属性的这个过程叫做派生

    派生方法一

    • 指明道姓访问某一个类的函数:该方法与继承无关
    class People:
        def __init__(self, name, age, gender):
            self.name = name
            self.gender = gender
            self.age = age
    
    
    class Student(People):
        def choose_course(self):
            print(f'{self.name} is choosing course')
    
    
    class Teacher(People):
        """由于老师类中有独有的__init__()方法,因此需要声明继承父类的__init__()"""
        def __init__(self, name, age, gender, level):
            
            # 其实就好比于调用了People里的__init__函数,与继承无关
            People.__init__(self, name, age, gender)  
            self.level = level  # 派生
    
        def teach_course(self):
            print(f'{self.name} is teaching')
    
    
    stu = Student('tank', '18', 'male')
    tea = Teacher('nick', '40', 'male', 1)
    
    print(stu.__dict__)
    
    {'name': 'tank', 'gender': 'male', 'age': '18'}
    
    print(tea.__dict__)
    
    {'name': 'nick', 'gender': 'male', 'age': '40', 'level': 1}
    

    派生方法二

    • 严格以继承属性查找关系
    • super()会得到一个特殊的对象,该对象就是按照继承关系专门用来访问父类中的属性的
    • super().__init__(不用为self传值)
    • super的完整用法是super(自己的类名,self),在python2中需要写完整,在python3中可以简写为super()
    class People:
        def __init__(self, name, age):
            self.name = name
            self.age = age
    
    
    class Student(People):
        def __init__(self, name, age, gender):
            # super(Student, self).__init__(name,age)
            super().__init__(name,age)
            self.gender = gender
            
    stud = Student('nick', 18, 'male')
    print(stud.__dict__)
    
    {'name': 'nick', 'age': 18, 'gender': 'male'}
    
  • 相关阅读:
    我的黑客偶像
    2020-2021-1学期 学号20201222 《信息安全专业导论》第5周学习总结
    XOR加密
    pep/9
    我的黑客偶像
    学年2020-2021,1 学号:20201222《信息安全专业导论》第4周学习总结”
    IEEE754浮点数转换
    师生关系
    罗马数字转阿拉伯数字
    第三周总结
  • 原文地址:https://www.cnblogs.com/863652104kai/p/11051781.html
Copyright © 2011-2022 走看看