zoukankan      html  css  js  c++  java
  • 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()
    
    ------学习贵在分享,贵在记录,贵在总结。
  • 相关阅读:
    非阻塞式线程安全列表-ConcurrentLinkedDeque
    计数器
    Linux 查看服务器内存使用情况
    Oracle to_date, to_timestamp
    Hibernate session.flush() 使用
    阿里规约认证(题库附答案)
    多态性
    Java数据类型
    String类特点分析
    数组的定义
  • 原文地址:https://www.cnblogs.com/kevin1220/p/14427179.html
Copyright © 2011-2022 走看看