面向对象程序设计五(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!⭐

  • 6
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

是羽十八ya

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值