python类与继承

class Robot_One:  # 第一代
    def __init__(self, year, name):  # 初始化函数
        self.year = year
        self.name = name

    def walking_on_plain(self):
        print(self.name + "只能在平地上行走,有障碍物就会摔倒")

    def robot_info(self):
        print("{0}年产生的机器人{1},是中国人研发的".format(self.year, self.name))


class RobotTwo(Robot_One):  # 第二代机器人继承第一代机器人的类
    # def __init__(self,year,name):
    #     self.year=year
    #     self.name=name

    def walking_on_ground(self):  # 子类函数名与父类重复,重写
        print(self.name + "可以在平地上平稳的行走")

    def walking_avoid_block(self):
        self.robot_info()
        print(self.name + "可以避开障碍物")

    # def robot_info(self):
    #     print("{0}年产生的机器人{1},是中国人研发的".format(self.year,self.name))


# 继承的类是否要用到初始化函数,看是否从父类中继承了
# 父类有子类也有,子类的实例优先使用子类的函数
t1 = Robot_One("1996","嘻嘻")
t1.robot_info()
t1.walking_on_plain()
print("*"*40)  # 分界线
t2 = RobotTwo("1990", "哈哈")  # 第二代继承第一代,所以需要传参数
t2.robot_info()  # 第二代继承了第一代的方法,所以第一代中有的函数第二代可以直接调用
t2.walking_on_plain()
t2.walking_on_ground()
t2.walking_avoid_block()
# 多继承的子类具有两个父类的属性和方法,如果两个父类具有同名的方法的时候
# 子类调用函数就近原则,初始化函数也包括在内

运行结果:

  1996年产生的机器人嘻嘻,是中国人研发的
  嘻嘻只能在平地上行走,有障碍物就会摔倒
  ****************************************
  1990年产生的机器人哈哈,是中国人研发的
  哈哈只能在平地上行走,有障碍物就会摔倒
  哈哈可以在平地上平稳的行走
  1990年产生的机器人哈哈,是中国人研发的
  哈哈可以避开障碍物

 
原文地址:https://www.cnblogs.com/jialeliu/p/14071016.html