鱼C论坛

 找回密码
 立即注册
查看: 2473|回复: 2

什么时候需要用到类Class?

[复制链接]
发表于 2021-2-20 09:25:49 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
最近一直在用python写些小程序帮忙工作,
一直都是用def函数来完成, 小甲鱼类前面的课程也全部学完了,
类也学了几页, 还没有学完,前面的课程感觉很顺, 到了类感觉就卡住了,
有点难, 不是很理解, 字面理解也知道
它是表示一类的, 一类有共性的东西, 这样就可以继承,
代码重用率好.
但一直没有发现用武之地, 不知道什么时候需要用到class.
有谁能举个简单好理解的例子来说明一下这个时候最好要用class吗?
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2021-2-20 10:04:51 | 显示全部楼层
本帖最后由 Peteryo01223 于 2021-2-20 11:22 编辑

回答:
对于只有几个角色、每个角色仅几个有限功能的 Python 小程序来说,确实,用不用class 无所谓。但大型开发中,class 的拓展性、灵活性、简洁性,几乎是必备的,这样才能有效地由浅入深、避免重复定义同类。

以下是我借鉴的例子,原创为网络大佬。
  • 男人 Men:上战场、吃、喝、拉、撒、睡。
  • 女人 Women:养孩子、吃、喝、拉、撒、睡。
  • 小孩 Children:学文化、吃、喝、拉、撒、睡。

单独给男人、女人、小孩 def 函数,是完全可以实现的,但需要为他们分别定义所有的功能。其中,吃、喝、拉、撒、睡是人都有的功能,我们却不得不编写了三遍。

这时,如果我们使用 class,就能利用继承的思想。如下:
  1. class Human():
  2.     def eat(self):
  3.         print ('吃饭')
  4.     def drink(self):
  5.         print ('喝水')
  6.     def poopoo(self):
  7.         print ('拉屎')
  8.     def peepee(self):
  9.         print ('撒尿')
  10.     def sleep(self):
  11.         print ('睡觉')
复制代码

然后,在 class 后面括号中写入另外一个类名,表示当前类继承另外一个类
  1. class Men(Human):
  2.     def 上战场(self):
  3.         print ('冲锋陷阵')
  4. class Women(Human):
  5.     def 养孩子(self):
  6.         print ('孕育后代')
  7. class Children(Human):
  8.     def 学文化(self):
  9.         print ('好好学习,天天向上')
复制代码

如此,将多个类共有的方法提取到父类中,子类仅需继承父类即可,而不必一一实现每个方法。
随着你开发的 code 越来越丰富,难免未来你会拓展角色,出现 “小姑娘、小媳妇、老首长、小伙子、少年团、中学生、美国大叔、俄罗斯老太太、仿真机器人” 等等,一系列子类。那么,他们就都可以通过类的继承,得以把常规功能(eat、drink、poopoo、peepee、sleep)复制,并加入各自的特性(婚姻状况、有无后代、是否退休、有无战斗经验、是否属于某团队、是否在校、国籍、有无情感。。。等等)。

目前,Python 运行结果举例:
  1. >>> a = Human() # 实例化父类
  2. >>> a.eat() # 调用其中 eat 的功能
  3. 吃饭
  4. >>> b = Men() # 实例化一个子类,男人
  5. >>> b.eat() # 调用其中 eat 的功能,父类里有,这里自然也有
  6. 吃饭
  7. >>> b.上战场() # 调用男人 上战场 的功能,父类里没有,是男人独有的,这里也调用成功
  8. 冲锋陷阵
  9. >>> c = Women() # 实例化另一个子类,女人
  10. >>> c.eat() # 调用其中 eat 的功能,父类里有,这里自然也有
  11. 吃饭
  12. >>> c.养孩子() # 调用女人 养孩子 的功能,父类里没有,是女人独有的,这里也调用成功。
  13. 孕育后代
复制代码

小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-2-20 13:16:35 | 显示全部楼层
学一下设计模式  和类最紧密的是控制反转(工厂模式plus) 就懂有啥用了
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-7-5 23:13

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表