一个类的例子--员工工资
类的例子
- 1.完整代码
- 2.错误总结
从学习中写的一个类学习类的知识
1.完整代码
"""
问题:某公司有三种类型的员工 分别是部门经理、程序员和销售员
需要设计一个工资结算系统 根据提供的员工信息来计算月薪
部门经理的月薪是每月固定15000元
程序员的月薪按本月工作时间计算 每小时150元
销售员的月薪是1200元的底薪加上销售额5%的提成
"""
#abc库用来创建抽象类,即只可以继承,不能创建实例(三步:导库+step1+step2)
from abc import ABCMeta,abstractmethod#固定月薪,时薪,底薪和提成
changeless_get = 15000
each_day_get = 150
base_get = 1200
get_proportion = 0.05#父类,且是抽象类,只能用于继承
class Employee(metaclass=ABCMeta): #抽象类实现step1:metaclass=ABCMetadef __init__(self,name):self.__name = name #双下划线代表是私有变量#@property装饰器的使用#这边是获取私有变量,方法和属性名一样,#则可以通过name来获取私有变量的名字@property def name(self):return self.__name#属性名.setter用来修改私有变量,也是property装饰器的方法@name.setterdef name(self,name):self.__name = name@abstractmethod #抽象类实现step2:@abstractmethod抽象类的方法def get_money(self):passclass Manger(Employee): #继承父类(超类)Employee,Manger即为子类def get_money(self): #重载(重写)方法,实现多态print("经理%s本月薪资%.2f元"%(self.name,changeless_get))class Program_man(Employee): #继承def __init__(self,name,work_time=0):super().__init__(name) #初始化子类属性用super().__init__self.__worktime = work_time #新增属性@propertydef worktime(self):return self.__worktime@worktime.setterdef worktime(self,worktime):self.__worktime = worktimedef get_money(self): #重载print("程序员%s该月的工资是%.2f元"%(self.name,each_day_get*self.__worktime))class sale_man(Employee):def __init__(self,name,earn):super().__init__(name)self.__earn = earn@propertydef earn(self):return self.__earn@earn.setterdef earn(self,earn):self.__earn = earndef get_money(self):print("销售员%s本月工资%.2f元"%(self.name,base_get+get_proportion*self.__earn))def main():manger_1 = Manger("张三")manger_1.get_money()program_man_1 = Program_man("雷军",150)program_man_1.get_money()sale_man_1 = sale_man("陈睿",82400)sale_man_1.get_money()if __name__ == '__main__': #写模块必写,表示只有运行该文件才运行如下方法main()
结果:
经理张三本月薪资15000.00元
程序员雷军该月的工资是22500.00元
销售员陈睿本月工资5320.00元
2.错误总结
①:
class Program_man(Employee):def __init__(self,name,work_time=0):super.__init__(name)self.__worktime = work_time
子类继承父类并且初始化父类属性时的时候super.__init__(name)
这里少了括号,导致TypeError: descriptor '__init__' requires a 'super' object but received a 'str'
错误。修改为super().__init__(name)
即可。
②:
class Program_man(Employee):def __init__(self,name,work_time=0):super().__init__(name)self.__worktime = work_time@propertydef name(self):return self.__name@name.setterdef name(self,name):self.__name = name@propertydef worktime(self):return self.__worktime@worktime.setterdef worktime(self,worktime):self.__worktime = worktimedef get_money(self):print("程序员%s该月的工资是%.2f元"%(self.name,each_day_get*self.__worktime))
这里明明父类已经有property装饰器
获取和修改name
了,子类中已经成功继承了这些方法,不需要重新再写一次同样的方法。导致错误:AttributeError: 'Program_man' object has no attribute '_Program_man__name'
修改:将以下语句删除即可@propertydef name(self):return self.__name@name.setterdef name(self,name):self.__name = name
③:
def get_money(self):print("程序员%s该月的工资是%.2f元"%(self.__name,each_day_get*self.__worktime))
这边类中函数调用的是self.__name
,也会出现如下错误:AttributeError: 'Program_man' object has no attribute '_Program_man__name'
更改为self.name
即可。
一个类的例子--员工工资相关推荐
- 实现一个名为Person的类和它的子类Employee,Manager是Employee的子类,设计一个方法add用于涨工资,普通员工一次能涨10%,经理涨20%.
1.实现一个名为Person的类和它的子类Employee,Manager是Employee的子类,设计一个方法add用于涨工资,普通员工一次能涨10%,经理涨20%,具体要求如下: (1)Perso ...
- java 员工类算工资_用java设计一个员工类,可以计算工资个人所得税
用java设计一个员工类,可以计算工资个人所得税 1. 背景 老师在课上布置了几道java编程题,此为其中之一 2. 题目内容 设计一个员工类.该员工具有下列私有属性:编号,姓名,基本工资,奖金 提 ...
- 互联网晚报 | 抖音否认3月1日全国上线外卖服务;百度类ChatGPT项目定名“文心一言”;任天堂将全体员工工资统一上调10%...
抖音否认3月1日全国上线外卖服务 有媒体报道称,抖音将于3月1日上线全国外卖服务,目前已在北京.上海.成都三地进行内测.对此,抖音内部人士表示,没有"3月1日全国上线外卖服务"的计 ...
- Java黑皮书课后题第9章:9.2(Stock类)遵照9.2节中Cirlce类的例子,设计一个名为Stock的类
Java黑皮书课后题第9章:9.2(Stock类)遵照9.2节中Cirlce类的例子,设计一个名为Stock的类 题目 代码 Test2 Test2_Stock UML图 题目 代码 Test2:测试 ...
- Java黑皮书课后题第9章:9.1 (Rectangle类)遵照9.2节中Circle类的例子,设计一个名为Rectangle的类表示矩形
Java黑皮书课后题第9章:9.1 (Rectangle类)遵照9.2节中Circle类的例子,设计一个名为Rectangle的类表示矩形 题目 代码 PS Test1 Test1_Rectangle ...
- 类模板与运算符重载(一个简单的例子)
类模板与运算符重载(一个简单的例子) 标签(空格分隔): C++ 算法竞赛 下面是一段简单的代码,表示我们建立了一个类模板Vector,可以看做是对STL中vector的简单实现. 为了让这个Vect ...
- 实现了某一个接口的匿名类的例子_java中的内部类内部接口详解,一文搞定
简介 一般来说,我们创建类和接口的时候都是一个类一个文件,一个接口一个文件,但有时候为了方便或者某些特殊的原因,java并不介意在一个文件中写多个类和多个接口,这就有了我们今天要讲的内部类和内部接口. ...
- php生成饼状图 柱形图,求一个饼状图或柱状图php生成类或例子
求一个饼状图或柱状图php生成类或例子 时间:2006/7/19 6:10:04 作者:佚名 人气:268 PHP代码:---------------------------------------- ...
- 对于‘用C#编写一个员工工资计算’问题的代码编写风格和结构设计考虑的比较【发现自己还是太弱,大家可以在评论区中提出我代码中的不足】
目录 1.'用C#编写一个员工工资计算'问题描述 2.个人思考和实现 2.1代码实现: 2.2调试结果及保存txt内容: 3.他人的实现 3.1代码实现: 3.2保存的txt内容: 1.'用C#编写一 ...
最新文章
- uml 类图_UML 类图
- 【UAV】陀螺仪数据分析,以维特智能 JY901B 为例
- ML之FE:特征工程中常用的一些处理手段(缺失值填充、异常值检测等)及其对应的底层代码的实现
- 生命很短,我用tldr
- Silverlight中全屏处理
- Modbus协议栈应用实例之二:Modbus RTU从站应用
- Struts2项目搭建
- [jQuery1.9]Cannot read property ‘msie’ of undefined错误的解决方法
- 利用php打印出九行菱形,C++ 输出菱形
- MySQL级联删除和级联修改
- Interface的精髓——《Thinking in Java》随笔025
- html是手机吗,MHTML是什么
- 腾讯音乐12月初赴美IPO,250亿美元被低估还是高估?
- 青出于蓝而胜于蓝 — Vue.js对Angular.js的那些进步
- 看到有人在帮易到洗白,镁客君只想说:易到或许并非不可或缺
- 有一个Map集合里面存储的是学生的姓名和年龄,内容如下{赵四=21,王二=17,张三=18,小丫=25,李四=26,王五=38}(15分) 	 * a.将里面的元素用两种遍历方式打印到控制台上 	 *
- pbr发光 unity_【学习笔记】Unity PBR的实现
- webpackjsonp 还原_EST:微生物介导下砷还原及其在铁氧化物上吸附/解吸耦合反应动力学模型...
- Unity制作格斗游戏核心思路总结
- 扫地机器人系统,主要划分为哪几个模块?