当前位置: 首页 > ds >正文

Python应用“面向对象”人力系统

        大家好!如果你刚开始学习 Python 面向对象编程,这个简易人力系统示例是一个很好的学习起点。通过这个示例,你将可以了解类的继承、方法重写等重要概念。​

      代码呈现:

#类继承练习:人力系统
#员工分为两类:全职员工 FullTimeEmployee、兼职员工 PartTimeEmployee。
#全职和兼职都有"姓名 name"、"工号" id属性,
#都具备"打印信息 print_info"(打印姓名、工号)方法。
#全职有"月薪 monthly_salary"属性,
#兼职有"日薪 daily_salary"属性,"每月工作天数 work_days"的属性。
#全职和兼职都有"计算月薪 calculate_monthly_pay"的方法,但具体计算过程不一样。class Employee:def __init__(self,name,id):self.name = nameself.id = iddef print_info(self):#info:信息print(f"员工名字:{self.name},工号:{self.id}") 
class FullTimeEmployee(Employee):def __init__(self,name,id,monthly_salary):super().__init__(name,id)self.monthly_salary = monthly_salarydef calculate_monthly_pay(self):return self.monthly_salary class PartTimeEmployee(Employee):def __init__(self,name,id,daily_salary,work_days):super().__init__(name,id)self.daily_salary = daily_salaryself.work_days = work_daysdef calculate_monthly_pay(self):return self.daily_salary * self.work_daysZhangSan = FullTimeEmployee("张三","1001",6000)
LiSi = PartTimeEmployee("李四","1002",230,15)
ZhangSan.print_info()
LiSi.print_info()
print(ZhangSan.calculate_monthly_pay())
print(LiSi.calculate_monthly_pay())

       代码介绍:

  1.    基类  Employee ​

      我们首先定义了一个基础类  Employee ,它包含:

​ name :员工姓名

 id :员工工号

​ print_info() :打印员工基本信息的方法​这个类就像一个模板,所有类型的员工都具备这些基本属性和方法。

       ​2. 继承​

       我们创建了两种员工类型:​

FullTimeEmployee :全职员工,领取固定月薪​ PartTimeEmployee :兼职员工,按日薪计算工资​这两个类都继承自 Employee  类,这意味着它们自动获得了  Employee  的所有属性和方法。​

        3. 方法重写​

        尽管全职和兼职员工都属于员工类别,但他们的工资计算方式不同。因此我们在两个子类中分别实现了自己的calculate_monthly_pay  方法:

​全职员工直接返回固定月薪​

兼职员工将日薪乘以工作天数​这种设计方式体现了面向对象编程的多态性。​

当你运行这段代码时,会得到以下输出:​

员工名字:张三, 工号:1001
员工名字:李四, 工号:1002
6000
3450

       总结:

        这个简易人力系统示例展示了 Python 面向对象编程的基本概念。通过继承和方法重写,我们能够以清晰简洁的方式表达不同类型的员工及其薪资计算方式。​如果你刚开始学习 Python,这个示例是一个很好的起点。通过模仿和修改这段代码,你可以更深入地理解面向对象编程的核心思想。​

http://www.xdnf.cn/news/8445.html

相关文章:

  • 深入解析自然语言处理中的语言转换方法
  • Docker Volumes 还原指南
  • java Sm2SignWithSM3转php
  • 网络学习-TCP协议(七)
  • 跨域解决方案之JSONP
  • YOLOV11改进策略【最新注意力机制】CVPR2025局部区域注意力机制LRSA-增强局部区域特征之间的交互
  • 使用DDR4控制器实现多通道数据读写(十三)
  • DAO模式
  • DEBUG设置为False 时,django默认的后台样式等静态文件丢失的问题
  • 新能源汽车滑行阻力参数计算全解析:从理论推导到MATLAB工具实现
  • macOS 安装 PostgreSQL
  • 基于大模型的股骨干骨折全周期预测与诊疗方案研究报告
  • 可视化大屏全屏后重载echarts图表
  • JUC并发编程1
  • MyBatis 笔记:parameterType、resultType 与 resultMap 的区别详解
  • Android 网络全栈攻略(四)—— 从 OkHttp 拦截器来看 HTTP 协议一
  • 146. LRU Cache
  • Anthropic公司近日发布了两款新一代大型语言模型Claude Opus 4与Claude Sonnet 4
  • 矩阵:线性代数在AI大模型中的核心支柱
  • 深入解析MySQL中的HAVING关键字:从入门到实战
  • Docker 与 Kubernetes 部署 RabbitMQ 集群(二)
  • C++ 忘掉std::cout吧,fmt和spdlog的结合
  • 达梦数据库-报错-01-[-3205]:全文索引词库加载出错
  • paddle 打包代码 ocr
  • 国产高云FPGA实现MIPI视频解码+图像缩放,基于OV5647摄像头,提供Gowin工程源码和技术支持
  • 04-jenkins学习之旅-java后端项目部署实践
  • 攻略生成模块
  • python邮件地址检验 2024年信息素养大赛复赛/决赛真题 小学组/初中组 python编程挑战赛 真题详细解析
  • C++---vector模拟实现
  • 黑马点评-实现安全秒杀优惠券(使并发一人一单,防止并发超卖)