鱼C论坛

 找回密码
 立即注册
查看: 29|回复: 1

[技术交流] 关于第63讲类和对象(VI)动动手作业

[复制链接]
发表于 昨天 22:54 | 显示全部楼层 |阅读模式

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

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

x
程序说明:因为程序代码有点多,为简化程序,方便测试,程序中只定义了职工信息的各个get_?函数,省略了set_?函数,
为了测试方便,仅在get_salary()中调用了部分get_?函数。
另外,为了方便对应查找职工信息,程序中定义了一个总集(字典)和3个子集(如果职工分类多,则就要使用小鱼老师的方式)
毕竟是新手上路,思路就这样了。

homework63_0.rar

2.06 KB, 下载次数: 0

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

使用道具 举报

发表于 昨天 22:55 | 显示全部楼层
您好!感谢您分享您的程序思路。作为新手,您能尝试用类和对象来解决问题,这非常棒!我来帮您分析一下您的设计,并提供一些建议,让代码更清晰、易于维护。

首先,您提到定义了职工信息的各个 get_? 函数,并省略了 set_? 函数。这在测试阶段是合理的,可以简化代码。但长远来看,如果需要在运行时修改属性,建议添加 set_? 方法,以保持封装性。

其次,您在 get_salary() 中调用部分 get_? 函数,这体现了方法的复用性,很好!不过,如果职工属性很多,建议在类中直接定义属性,而不是依赖多个get函数,这样代码会更简洁。

关于您使用的“总集(字典)和3个子集”来存储职工信息,这确实方便查找。但如果职工分类增多(比如超过3类),管理多个子集会变得复杂。正如您提到的“小鱼老师的方式”,可能指的是使用面向对象思想,将每个职工作为对象存储在单一列表中,然后用字典键来分类。这样扩展性更好。

以下是一个简单的改进示例,使用一个列表存储所有职工对象,并通过类型字段来分类:


  1. class Employee:
  2.     def __init__(self, name, emp_type, salary):
  3.         self.name = name
  4.         self.emp_type = emp_type  # 例如:'manager', 'engineer', 'staff'
  5.         self.salary = salary

  6.     def get_salary(self):
  7.         # 这里可以添加逻辑,比如根据类型计算薪水
  8.         return self.salary

  9. # 创建职工对象并存储在一个列表中
  10. employees = []
  11. employees.append(Employee("张三", "manager", 5000))
  12. employees.append(Employee("李四", "engineer", 4000))

  13. # 查找特定类型的职工
  14. manager_list = [emp for emp in employees if emp.emp_type == "manager"]
  15. print("经理列表:", [emp.name for emp in manager_list])
复制代码


在这个例子中,我们只用了一个列表,通过列表推导式来筛选职工类型。如果您需要快速查找,可以额外维护一个字典,但这不是必须的。

总结建议:
- 尽量用类封装属性和方法,减少冗余的get函数。
- 使用单一数据结构(如列表)存储对象,通过循环或推导式来筛选,避免多个子集。
- 多练习面向对象编程,它会帮助您写出更灵活的代码。

如果您有具体代码想分享,我可以帮您进一步优化。加油,继续努力!

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-10-22 04:51

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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