> 文档中心 > 面向对象程序设计五(Python类继承、父子类关系)

面向对象程序设计五(Python类继承、父子类关系)


  • 子类关系是面向对象程序设计中不可缺少的一部分,本文通过类比方法引入父子类继承的概念
  • 并在理论基础上提供步步解析的详细示例,适合新手学习、老手复习

ps:建议新手看完类比概念后先简单过一遍示例,最后回头看语法之后,再过一边示例,有利于更好理解其性质特点

  • 父子类关系
    • 概念
      • 父类
      • 子类(继承父类属性+行为,同时有自己属性/行为/属性+行为)
      • eg.
        • 父类:属性:西瓜;行为:解渴
        • 父类的继承子类A:属性:有籽,西瓜;行为:解渴
        • 父类的继承子类B:属性:无籽,西瓜;行为:解渴
    • 子类继承父类
      • 子类实例使用父类实例属性情况
      • 语法:四步走
      • 子类名后添加父类名+括号
        • class Student(Human):
      • 子类实例属性添加父类实例属性变量
        • def __init__(self, weight, height, hobby):
      • 子类构造函数内添加继承语句,并且键入父类实例属性变量(weight,height)
        • super().__init__(weight, height)
      • 实例化赋予父类实例属性(63,178)+子类实例属性('basketball')
        • A = Student(63,178,'basketball')
      • 若在第三步中,提前赋予父类实例属性,则第四步只要赋予子类实例属性(后续代码有演示)
# 语法实例:# 定义父类:class Human:    goal = 'love and peace'    # 父类属性    def __init__(self, formweight, formheight): self.weight = formweight    # 建立父类实例属性weight self.height = formheight    # 建立父类实例属性height    def Run(self):    # 建立父类方法 print('成功调用父类的方法')
# 定义继承父类的子类:# 情况1:# 子类实例未使用父类实例的实例属性# 子类仅使用父类的类属性、方法class Student(Human):    # 类命名格式多了(Human),表示Student继承于Human类    S = '99'    # 定义子类特有的子类类属性    def __init__(self, formhobby):    # 开始构造子类实例 self.hobby = formhobby    # 建立子类实例特有的实例属性hobby print('继承的父类-类属性为', self.goal) # 子类实例使用父类的类属性 self.Run()    # 子类实例使用父类方法 print('子类实例的字典:', self.__dict__)  # 检验是否存入子类实例dict中A = Student('basketball')    # 子类实例化,basketbll传入子类实例属性hobby# 输出结果:# 继承的父类-类属性为 love and peace    # 成功调用父类的方法    # 子类实例的字典: {'hobby': 'basketball'}# --------------------------------------------------------------------------------# 第17行结果,说明子类实例可以调用父类类属性goal# 第18行结果,说明子类实例可以调用父类的方法Run# 第19行结果,说明子类实例的字典dict里无父类类属性goal,无子类类属性S,但却可以调用# 说明父子类继承后子类实例仍然遵循,实例仅访用类的机制# 个人理解:因为子类是继承于父类,拥有父类的一切属性和功能,并且有自己新的属性和功能# 相当于子类是父类的加强版,类比:手机1可以打电话,手机2是手机1的升级版可以打电话+短信# 导出结论:# '子类继承父类过程' 和 '类实例化' 的区别:# 前者称:继承(特点:存储上级的一切)# 后者称:仅访用(特点:可以访问使用上级功能,但不存储在dict里)
# 定义继承父类的子类:# 情况2:# 子类实例使用父类实例的实例属性# 子类使用父类的类属性、方法class Student(Human):    # 表示继承关系    def __init__(self, fatherw, fatherh, formhobby):    # 设置2+1参数入口 super().__init__(fatherw, fatherh)    # 利用父类的构造函数添加子类的实例属性 self.hobby = formhobby    # 建立子类实例特有的实例属性hobby print('录入的信息有:', self.weight, self.height, self.hobby)A = Student(63,178,'basketball')# 输出结果:# 录入的信息有: 63 178 basketball

⭐看到这里了,如果觉得文章不错的话,就一键三连吧⭐

⭐有有疑问欢迎评论区留言、私信博主羽十八ya交流⭐

⭐你的支持会给博主更新blog带来巨大滴动力!Thank you!⭐

耳机推荐