• python 类的继承


    类的继承

    • 相关概念:

      • 继承:父类的属性和方法子类可以直接拥有称为继承

      • 派生:子类在父类的基础上衍生出来的新的特征(属性和方法)

      • 总结:其实他们是一回事,只是描述问题的角度侧重点不同(继承侧重相同点,派生侧重不同点)

    • 相关语法:

      
      
      # class Animal(object):
        # 当没有指定父类时,相当默认父类为object
        class Animal:
            def __init__(self, name):
                self.name = name
      ​
            def eat(self):
                print('小动物喜欢一天到晚吃个不停')
                  
      # 继承自Animal
      class Dog(Animal):
          pass
      ​
      d = Dog('旺财')
      # 直接拥有父类的方法
      d.eat()
      # 直接拥有父类的属性
      print(d.name)
    • 派生:子类可以扩充属性和方法

      
      
      class Animal:
          def run(self):
              print('小动物喜欢到处乱跑')
              
      class Rabbit(Animal):
          # 添加方法
          def eat(self):
              print('爱吃萝卜和青菜')
              
      xiaobai = Rabbit()
      xiaobai.run()
      xiaobai.eat()
      # 添加属性
      xiaobai.color = 'white'
      print(xiaobai.color)
    • 重写:

      • 父类的方法完全不合适,子类需要全部的覆盖

      • 父类的方法合适,但是需要完善

      • 示例:

      
      
      class Animal:
            def run(self):
                print('小动物喜欢到处乱跑')
      ​
            def eat(self):
                print('小动物也是一天三顿')
                  
      class Cat(Animal):
          # 当父类的方法完全不合适时,可以覆盖重写
          def run(self):
              print('俺走的是猫步')
      ​
          # 父类的方法合适,但是子类需要添加内容完善功能
          def eat(self):
              # 调用父类方法,不建议使用
              # Animal.eat(self)
              # super(Cat, self).eat()
              # 类名及self可以不传
              super().eat()
              print('不过俺喜欢吃鱼')
      ​
      jiafei = Cat()
      jiafei.run()
      jiafei.eat()
    • 多继承

      • 概念:一个类可以有多个父类

      • 示例:

      
      
      class A:
          def eat(self):
              print('eat func of A')
           
      class B:
          def eat(self):
              print('eat func of B')
              
      # 多继承,多个父类使用逗号隔开
      class C(B, A):
          def eat(self):
              # 当多个父类拥有相同的方法时,会按照继承时的先后顺序进行选择
              # super().eat()
              # 如果非要使用后面的类的方法时,可以明确指定进行调用
              A.eat(self)
              
      c = C()
      c.eat()
  • 相关阅读:
    POJ 2661
    POJ 2643
    POJ 2656
    POJ 2612
    POJ 2636
    搭建WordPress个人博客
    【个人笔记】ximo早期发的脱壳教程——手脱UPX壳
    2.1【欢乐向】攻防世界新手逆向刷题被虐哭日常记录
    吾爱破解培训第一课个人笔记
    第五章 计算机组成
  • 原文地址:https://www.cnblogs.com/kiki5881/p/8572680.html
Copyright © 2020-2023  润新知