• Python中类的继承


    类的继承特点:
        1. 如果类中不定义__init__,调用父类__init__
        2. 如果类继承父类也需要定义自己的__init__,就需要在当前类的__init__调用一下父类的__init__
        3. 如果调用父类__init__:
            super().__init__(参数)
            super(类名,对象).__init__(参数)
        4. 如果父类有eat(),子类也定义一个eat()方法,默认搜索的原则:先找当前类,再去找父类
            s.eat()
            override:重写(覆盖)父类方法
            父类提供的方法不能满足子类的需求,就需要在子类中定义一个同名的方法,即重写方法
        5. 子类的方法中也可以调用父类的方法: super().方法名(参数)
    
    # 父类
    class Person:
        def __init__(self, name, age, occupation):
            self.__name = name
            self.__age = age
            self.__occupation = occupation
    
        def eat(self):
            print(self.__name + '正在吃饭...')
    
        def run(self):
            print(self.__name + '正在跑步...')
    
        @property
        def name(self):
            return self.__name
    
        @name.setter
        def name(self, name):
            self.__name = name
    
        @property
        def age(self):
            return self.__age
    
        @age.setter
        def age(self, age):
            self.__age = age
    
        @property
        def occupation(self):
            return self.__occupation
    
        @occupation.setter
        def occupation(self, occupation):
            self.__occupation = occupation
    
    
    # 子类1
    class Student(Person):
        # 在重写子类的init之前先要调用父类的init
        def __init__(self, name, age, occupation, clazz):
            print('-----------Student的init')
            # 调用父类的init
            super().__init__(name, age, occupation)  # 使用super() 调用父类对象
            self.__clazz = clazz
    
        def study(self, course):
            print('{}正在学习{}'.format(self.name, course))
    
        def __str__(self):
            return '姓名:{},年龄:{},身份:{},班级:{}'.format(self.name, self.age, self.occupation, self.__clazz)
    
    
    # 子类2
    class Employee(Person):
        def __init__(self, name, age, occupation, salary, manager):
            super().__init__(name, age, occupation)  #
            self.__salary = salary
            self.__manager = manager
            self.__occupation = occupation
    
        def __str__(self):
            return '姓名:{},年龄:{},身份:{},薪资:{},领导:{}'.format(self.name, self.age, self.__occupation, self.__salary,
                                                          self.__manager)
    
    
    s = Student('张三', 18, '学生', '2019学习班')
    print(s)
    s.run()
    s.study('python')
    e = Employee('李四', 30, '职员', 8000, '总经理')
    print(e)
    e.eat()
    
    ------学习贵在分享,贵在记录,贵在总结。
  • 相关阅读:
    [转][Silverlight] aspx页面上传递参数给Silverlight插件的方法
    [C#] 利用cmd远程网内机器,实现文件互传
    [CSS] 对于一个连在一起很长的字符串,在页面上控制换行
    [CSS] 设置input和img在同一行上
    [MySQL] 记MySQL与MS SQL的几点不同
    [JQuery] 利用jquery的ajax调用后台的WebService公共方法和网页的静态方法
    【计算机组成原理】——计算机发展简史
    【计算机组成原理】——计算机的分类
    【JavaScript高级程序设计4th】第1章 什么是JavaScript——总结
    css重置样式表(两种版本)
  • 原文地址:https://www.cnblogs.com/kevin1220/p/14427179.html
Copyright © 2020-2023  润新知