#继承 class RobotOne: #第一代机器人 def __init__(self,year,name): self.year=year self.name=name def walking_on_ground(self): print(self.name+'只能在平地上行走,有障碍物就会摔的') def robot_info(self): print("{0}年产生的机器人{1},是中国研发的".format(self.year,self.name)) # 为了多继承写的第二代机器人 # class RobotTwo(RobotOne): #第二代机器人,继承了第一代了类 # # def walking_on_ground(self): #子类里面的函数名和父类函数名重复的时候,就叫重写 # print(self.name+'可以在平地上行走') # # def walking_avoid_block(self): #父类没有,子类有,叫拓展 # #想在子类的函数里面调用父类的一个函数 # self.robot_info() # print(self.name+"可以避开障碍物") # class RobotTwo: #第二代机器人, # def __init__(self,year,name): # self.year=year # # def walking_on_ground(self): #子类里面的函数名和父类函数名重复的时候,就叫重写 # print(self.name+'可以在平地上行走') # # def walking_avoid_block(self): #父类没有,子类有,叫拓展 # #想在子类的函数里面调用父类的一个函数 # self.robot_info() # print(self.name+"可以避开障碍物") #为了超继承写的第二代机器人 class RobotTwo(RobotOne): #第二代机器人, def walking_on_ground(self): #子类里面的函数名和父类函数名重复的时候,就叫重写 super(RobotTwo,self).walking_on_ground() #超继承,会继承父类的该方法 print(self.name+'可以在平地上行走') r= RobotTwo("1990","小王") r.robot_info() r.walking_on_ground() #r.walking_avoid_block() #继承的类 是否要用到初始化函数 请看是否从父类继承了。 #父类有的,继承后,可以直接拿过来用 #父类有的,子类也有重名的函数,那么子类的实例就优先调用子类的函数 #面试的时候的继承:多继承和超继承 #第三代机器人,多继承 # class RobotThree(RobotOne,RobotTwo): #第三代机器人,继承了第一代和第二代的了类 # def jump(self): # print(self.name+"单膝跳跃") # # r3=RobotThree("2000","大王") # r3.jump() # r3.walking_on_ground() #会摔倒,RobotOne在前,RobotTwo在后 # # r3=RobotThree("大王") # r3.walking_on_ground() #不会摔倒,RobotTwo在前,RobotOne在后 #具有两个父类的属性和方法,如果两个父类具有同名方法的时候,就近原则。 #多继承的时候,继承的类的初始化值不一致问题??? #子类调用函数就近原则,初始化函数也包括在内。 #超继承 #改写父类的方法,同时还要使用父类的方法,使用超继承。 #super关键字会顺着子类的名字去找到父类的方法,调用父类里面的重名方法