类的例子

  • 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即可。

一个类的例子--员工工资相关推荐

  1. 实现一个名为Person的类和它的子类Employee,Manager是Employee的子类,设计一个方法add用于涨工资,普通员工一次能涨10%,经理涨20%.

    1.实现一个名为Person的类和它的子类Employee,Manager是Employee的子类,设计一个方法add用于涨工资,普通员工一次能涨10%,经理涨20%,具体要求如下: (1)Perso ...

  2. java 员工类算工资_用java设计一个员工类,可以计算工资个人所得税

    用java设计一个员工类,可以计算工资个人所得税 1. 背景 老师在课上布置了几道java编程题,此为其中之一 2. 题目内容 设计一个员工类.该员工具有下列私有属性:编号,姓名,基本工资,奖金  提 ...

  3. 互联网晚报 | 抖音否认3月1日全国上线外卖服务;百度类ChatGPT项目定名“文心一言”;任天堂将全体员工工资统一上调10%...

    抖音否认3月1日全国上线外卖服务 有媒体报道称,抖音将于3月1日上线全国外卖服务,目前已在北京.上海.成都三地进行内测.对此,抖音内部人士表示,没有"3月1日全国上线外卖服务"的计 ...

  4. Java黑皮书课后题第9章:9.2(Stock类)遵照9.2节中Cirlce类的例子,设计一个名为Stock的类

    Java黑皮书课后题第9章:9.2(Stock类)遵照9.2节中Cirlce类的例子,设计一个名为Stock的类 题目 代码 Test2 Test2_Stock UML图 题目 代码 Test2:测试 ...

  5. Java黑皮书课后题第9章:9.1 (Rectangle类)遵照9.2节中Circle类的例子,设计一个名为Rectangle的类表示矩形

    Java黑皮书课后题第9章:9.1 (Rectangle类)遵照9.2节中Circle类的例子,设计一个名为Rectangle的类表示矩形 题目 代码 PS Test1 Test1_Rectangle ...

  6. 类模板与运算符重载(一个简单的例子)

    类模板与运算符重载(一个简单的例子) 标签(空格分隔): C++ 算法竞赛 下面是一段简单的代码,表示我们建立了一个类模板Vector,可以看做是对STL中vector的简单实现. 为了让这个Vect ...

  7. 实现了某一个接口的匿名类的例子_java中的内部类内部接口详解,一文搞定

    简介 一般来说,我们创建类和接口的时候都是一个类一个文件,一个接口一个文件,但有时候为了方便或者某些特殊的原因,java并不介意在一个文件中写多个类和多个接口,这就有了我们今天要讲的内部类和内部接口. ...

  8. php生成饼状图 柱形图,求一个饼状图或柱状图php生成类或例子

    求一个饼状图或柱状图php生成类或例子 时间:2006/7/19 6:10:04 作者:佚名 人气:268 PHP代码:---------------------------------------- ...

  9. 对于‘用C#编写一个员工工资计算’问题的代码编写风格和结构设计考虑的比较【发现自己还是太弱,大家可以在评论区中提出我代码中的不足】

    目录 1.'用C#编写一个员工工资计算'问题描述 2.个人思考和实现 2.1代码实现: 2.2调试结果及保存txt内容: 3.他人的实现 3.1代码实现: 3.2保存的txt内容: 1.'用C#编写一 ...

最新文章

  1. uml 类图_UML 类图
  2. 【UAV】陀螺仪数据分析,以维特智能 JY901B 为例
  3. ML之FE:特征工程中常用的一些处理手段(缺失值填充、异常值检测等)及其对应的底层代码的实现
  4. 生命很短,我用tldr
  5. Silverlight中全屏处理
  6. Modbus协议栈应用实例之二:Modbus RTU从站应用
  7. Struts2项目搭建
  8. [jQuery1.9]Cannot read property ‘msie’ of undefined错误的解决方法
  9. 利用php打印出九行菱形,C++ 输出菱形
  10. MySQL级联删除和级联修改
  11. Interface的精髓——《Thinking in Java》随笔025
  12. html是手机吗,MHTML是什么
  13. 腾讯音乐12月初赴美IPO,250亿美元被低估还是高估?
  14. 青出于蓝而胜于蓝 — Vue.js对Angular.js的那些进步
  15. 看到有人在帮易到洗白,镁客君只想说:易到或许并非不可或缺
  16. 有一个Map集合里面存储的是学生的姓名和年龄,内容如下{赵四=21,王二=17,张三=18,小丫=25,李四=26,王五=38}(15分) * a.将里面的元素用两种遍历方式打印到控制台上 *
  17. pbr发光 unity_【学习笔记】Unity PBR的实现
  18. webpackjsonp 还原_EST:微生物介导下砷还原及其在铁氧化物上吸附/解吸耦合反应动力学模型...
  19. Unity制作格斗游戏核心思路总结
  20. 扫地机器人系统,主要划分为哪几个模块?

热门文章

  1. 关于python和speech
  2. 服务器系统运行状态检测邮件报警
  3. BetterScroll 使用
  4. RSA加密——欧拉定理
  5. SonarQube 指标定义
  6. C#中的delegate和event作用及区别
  7. 记录下linux系统tar命令解压文件时碰到的问题
  8. 基于java的中小型超市销售管理系统
  9. TB交易开拓者实盘策略002
  10. 采用DESeq2对表达量进行PCA和聚类分析