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()
    
    ------学习贵在分享,贵在记录,贵在总结。
  • 相关阅读:
    [20180808]exists and not exists.txt
    [20180806]tune2fs调整保留块百分比.txt
    [20180730]exadata与行链接.txt
    [20180801]insert导致死锁.txt
    [20180718]拷贝数据文件从dg库.txt
    [20180713]关于hash join 测试中一个疑问.txt
    [20180705]关于hash join 2.txt
    virtualbox 中ubantu虚拟机范文win7文件夹
    myeclipse10安装findbugs
    win7共享文件夹给局域网
  • 原文地址:https://www.cnblogs.com/kevin1220/p/14427179.html
Copyright © 2011-2022 走看看