关于第63讲类和对象(VI)动动手作业
程序说明:因为程序代码有点多,为简化程序,方便测试,程序中只定义了职工信息的各个get_?函数,省略了set_?函数,为了测试方便,仅在get_salary()中调用了部分get_?函数。
另外,为了方便对应查找职工信息,程序中定义了一个总集(字典)和3个子集(如果职工分类多,则就要使用小鱼老师的方式)
毕竟是新手上路,思路就这样了。 您好!感谢您分享您的程序思路。作为新手,您能尝试用类和对象来解决问题,这非常棒!我来帮您分析一下您的设计,并提供一些建议,让代码更清晰、易于维护。
首先,您提到定义了职工信息的各个 get_? 函数,并省略了 set_? 函数。这在测试阶段是合理的,可以简化代码。但长远来看,如果需要在运行时修改属性,建议添加 set_? 方法,以保持封装性。
其次,您在 get_salary() 中调用部分 get_? 函数,这体现了方法的复用性,很好!不过,如果职工属性很多,建议在类中直接定义属性,而不是依赖多个get函数,这样代码会更简洁。
关于您使用的“总集(字典)和3个子集”来存储职工信息,这确实方便查找。但如果职工分类增多(比如超过3类),管理多个子集会变得复杂。正如您提到的“小鱼老师的方式”,可能指的是使用面向对象思想,将每个职工作为对象存储在单一列表中,然后用字典键来分类。这样扩展性更好。
以下是一个简单的改进示例,使用一个列表存储所有职工对象,并通过类型字段来分类:
class Employee:
def __init__(self, name, emp_type, salary):
self.name = name
self.emp_type = emp_type# 例如:'manager', 'engineer', 'staff'
self.salary = salary
def get_salary(self):
# 这里可以添加逻辑,比如根据类型计算薪水
return self.salary
# 创建职工对象并存储在一个列表中
employees = []
employees.append(Employee("张三", "manager", 5000))
employees.append(Employee("李四", "engineer", 4000))
# 查找特定类型的职工
manager_list =
print("经理列表:", )
在这个例子中,我们只用了一个列表,通过列表推导式来筛选职工类型。如果您需要快速查找,可以额外维护一个字典,但这不是必须的。
总结建议:
- 尽量用类封装属性和方法,减少冗余的get函数。
- 使用单一数据结构(如列表)存储对象,通过循环或推导式来筛选,避免多个子集。
- 多练习面向对象编程,它会帮助您写出更灵活的代码。
如果您有具体代码想分享,我可以帮您进一步优化。加油,继续努力!
以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
页:
[1]