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
原文地址:https://www.cnblogs.com/monica711/p/9857884.html