zoukankan      html  css  js  c++  java
  • Python3基础19——类的继承

    类的继承特点:
    • 子类里面的函数名与父类函数名重复的时候,就叫重写
    • 继承的类,是否要用到初始化函数,请看是否从父类里面继承了
    • 父类有的,继承后,我都可以直接拿过来用
    • 父类有,子类也有重名的函数,那么子类的实例就优先调用子类的函数
       1 class RobotOne:#第一代机器人
       2     def __init__(self,name,year=None):
       3         self.year=year
       4         self.name=name
       5 
       6     def walking_on_ground(self):#
       7         print(self.name+"只能在平地上行走,有障碍物就会摔倒")
       8 
       9     def robot_info(self):
      10         print("{0}年产生的机器人{1},是中国研发的".format(self.year,self.name))
      11 #继承
      12 class RobotTwo(RobotOne):#第二代机器人继承于第一代机器人的类
      13 
      14      def walking_on_ground(self):#子类里面的函数名与父类函数名重复的时候,就叫重写
      15         print(self.name+"可以在平地上平稳的行走")
      16 
      17      def walking_avoid_block(self):#拓展
      18          #我想在子类的函数里面调用父类的一个函数
      19          self.robot_info()
      20          print(self.name+"可以避开障碍物")

    多继承:多继承的子类具有两个父类的属性和方法 ,如果两个父类具有同名方法的时候,子类调用函数就近原则 ,初始化函数也包括在内

     1 #为了多继承写的一个第二代机器人
     2 class RobotTwo():#第二代机器人
     3      def __init__(self,name):
     4          self.name=name
     5 
     6      def walking_on_ground(self):#子类里面的函数名与父类函数名重复的时候,就叫重写
     7         print(self.name+"可以在平地上平稳的行走")
     8 
     9      def walking_avoid_block(self):#拓展
    10          #我想在子类的函数里面调用父类的一个函数
    11          print(self.name+"可以避开障碍物")
    12 
    13 #第三代机器人
    14 class RobotThree(RobotTwo,RobotOne):#第三代机器人继承于第一代和第二代机器人的类
    15     def __init__(self,year,name):
    16         self.year=year
    17         self.name=name
    18 
    19     def jump(self):
    20         print(self.name+"可以单膝跳跃")

     超继承:super(子类名,实例化).(父类中的方法),保留父类的这个方法同时加上自己的方法

     1 class MathMethod:
     2     def __init__(self, a, b):
     3         self.a = a
     4         self.b = b
     5 
     6     def add(self):
     7         return print("我是父类的加法:", self.a + self.b)
     8 
     9     def sub(self):
    10         return self.a - self.b
    11 
    12 
    13 class MathMethod_1(MathMethod):
    14     def divide(self):  # 拓展
    15         return self.a / self.b
    16 
    17     def add(self):  # 重写
    18         # super(子类名,实例化).(父类中的方法)
    19         super(MathMethod_1, self).add()
    20         print("我是子类的加法", self.b + self.b + 10)
    21 
    22 
    23 if __name__ == '__main__':
    24     MathMethod_1(10, 5).add()
    25 
    26 ------>我是父类的加法: 15
    27 ------>我是子类的加法 20
  • 相关阅读:
    第20月第30日 集体智慧编程
    第20月第29天 cocoa抽象工厂 cocoapods组件化 cocoapods升级
    第20月第28天 tensorflow
    第20月第27天 游戏编程的人工智能
    第20月第22天 2016计算机大会后记——机器学习:发展与未来
    第20月第18天 小码哥swift
    第20月第17天 mvvm 多次点击push -ObjC
    第20月第14天 objc_getAssociatedObject _cmd
    第20月第9天 paddlepaddle
    第20月第4天 pycharm utf-8
  • 原文地址:https://www.cnblogs.com/monica711/p/9857884.html
Copyright © 2011-2022 走看看