使用面向对象思想,利用封装和继承书写代码

1)⼩学⽣:
属性:姓名、学号、年龄、性别
⾏为: 学习 打架
2)中学⽣:
属性:姓名、学号、年龄、性别
⾏为: 学习 谈恋爱
3)⼤学⽣:
属性: 姓名、学号、年龄、性别
⾏为: 学习 打游戏
测试类中: 创建⼩学⽣对象、调⽤学习的⽅法
打印内容为: xx 学习的内容为:语⽂ 数学 英语
创建中学⽣对象 、调⽤学习的⽅法
打印内容为:xx 学习的内容为:语数外 ⽣物化 史地政
创建⼤学⽣对象 、调⽤学习的⽅法:
打印内容为: 逃课中。。。。。。
class Student:def __init__(self,name,sno,age,sex):self.name = nameself.sno = snoself.age = ageself.sex = sex# 学习def study(self,subject):print(f"{self.name}学习的内容为:{subject}")class PrimaryStudent(Student):def fight(self):print(f"{self.name}在外面打架")class MiddleStudent(Student):def amativeness(self):print(f"{self.name}正在谈恋爱")class CollegeStudent(Student):def study(self):print("逃课中。。。。。。。")def play_game(self):print(f"{self.name}在打英雄联盟")# 小学生对象
ps = PrimaryStudent("tom","20200601",18,"男")
ps.study("语文 数学 英语")
ps.fight()# 中学生对象
ms = MiddleStudent("the bug","20200602",19,"女")
ms.study("语数外 生物化 史地政")
ms.amativeness()# 大学生对象
cs = CollegeStudent("the shy","20200603",20,"男")
cs.study()
cs.play_game()
2、主⼈杨夫⼈ 向客⼈ 李⼩姐介绍⾃⼰家的宠物狗和宠物猫
 宠物狗:
    昵称是:⻉⻉
    年龄是:2
    性别:雌
    会两条腿⾏⾛的才艺
宠物猫
   昵称是:花花
   年龄是 1
   性别是:雄
   会装死的才艺

class Animal:def __init__(self,name,age,sex):self.name = nameself.age = ageself.sex = sexclass Dog(Animal):def __str__(self):return f"""宠物狗:昵称是:{self.name}年龄是:{self.age}性别:{self.sex}会两条腿行走的才艺"""
class Cat(Animal):def __str__(self):return f"""宠物猫:昵称是:{self.name}年龄是:{self.age}性别:{self.sex}会装死的才艺"""class Person:def __init__(self,host,guest):self.host = hostself.guest = guestdef show(self):print(f"主人{self.host}向客人{self.guest}介绍自己家的宠物猫,宠物狗")dog = Dog("贝贝",2,"雌")
cat = Cat("花花",2,"雄")
person = Person("杨夫人","李小姐")
person.show()
print(dog,cat)

3、设计⼀个Person,包含姓名、年龄和性别三个私有成员属性,另外Person类还包含males和females两个私有类属性,⽤来记录男⽣和⼥⽣的数量, 可以通过number_male和number_female两个公有类⽅法获取males和females两个私有类属性的值。⾃⼰完成Person类的设计,然后实例化多个Person的对象, 分别统计男⼥的⼈数

class Person:__males = 0   # 私有类属性__females = 0  # 私有类属性def __init__(self,name,age,sex):self.__name = nameself.__age = ageself.__sex = sexif self.__sex == '男':self.__class__.__males += 1    # __class__ 当前对象所处的类,然后调用类属性else:self.__class__.__females += 1@classmethod   # 类方法装饰器def number_males(cls):print(cls.__males)@classmethoddef number_females(cls):print(cls.__females)# 析构函数,删除,对应减一def __del__(self):if self.__sex == '男':self.__class__.__males -= 1else:self.__class__.__females -= 1p1 = Person('tom',18,'男')
p2 = Person('tom1',17,'女')
p3 = Person('tom2',19,'男')
p4 = Person('tom3',18,'男')
p5 = Person('tom4',18,'女')
p6 = Person('tom5',17,'男')
p7 = Person('tom5',20,'女')
p8 = Person('tom6',18,'男')
p9 = Person('tom7',21,'男')
Person.number_males()
Person.number_females()
.4、编写⼀个简单的⼯资管理程序,系统可以管理以下四类⼈:⼯⼈(worker)、销 售员(salesman)、经理(manager)、销售经理(salemanger)。 所有的员⼯都具 有员⼯号,姓名,⼯资等属性,有设置姓名,获取姓名,获取员⼯号,计算⼯资等
⽅法。 1)⼯⼈:⼯⼈具有⼯作⼩时数和时薪的属性,⼯资计算法⽅法为⼯作⼩时 数时薪。 2)销售员:具有销售额和提成⽐例的属性,⼯资计算⽅法为销售额提成 ⽐例。 3)经理:具有固定⽉薪的属性,⼯资计算⽅法为固定⽉薪。 4)销售经理: ⼯资计算⽅法为销售额*提成⽐例+固定⽉薪。 请根据以上要求设计合理的类,完 成以下功能: 1)添加所有类型的⼈员 2)计算⽉薪 3)显示所有⼈⼯资情况
# -*- coding: utf-8 -*-
# @File : 工资管理系统.py
# 描述 :
# @Time : 2020/6/6 13:00
# @Author : 崔
# @versions : 1.0class Staff:def __init__(self,id,name):self.__id = idself.__name = nameself.wage = 0@propertydef get_name(self):return self.name@get_name.setter   # 可写属性 先定义读 才能定义写def set_name(self):return self.name@property  # 可读def get_id(self):return self.iddef Calculate_salary(self):return self.wageclass Worker(Staff):def __init__(self,id,name,hour_num,hour_wage):""":param id: 工号:param name: 姓名:param hour_num: 工作小时数 :param hour_wage:  时薪"""super().__init__(id,name)self.hour_num = hour_numself.hour_wage = hour_wagedef Calculate_salary(self):self.wage = self.hour_num * self.hour_wagereturn self.wageclass Salesman(Staff):def __init__(self,id,name,sales,sales_percentage):""":param sales: 销售额:param sales_percentage: 提成比例,小数 """super().__init__(id,name)self.sales = salesself.sales_percentage = sales_percentagedef Calculate_salary(self):self.wage = self.sales * self.sales_percentagereturn self.wageclass Manager(Staff):def __init__(self,id,name,month_money):""":param month_money: 月薪"""super().__init__(id,name)self.month_money = month_moneydef Calculate_salary(self):self.wage = self.month_moneyreturn self.wageclass Salemanger(Staff):def __init__(self,id,name,month_money,sales,sales_percentage):""":param month_money: 月薪:param sales: 销售额:param sales_percentage: 提成,小数"""super().__init__(id,name)self.month_money = month_moneyself.sales = salesself.sales_percentage = sales_percentagedef Calculate_salary(self):self.wage = self.sales * self.sales_percentage + self.month_moneyreturn self.wageworker = Worker("20200601","小明",10,300)
salesman = Salesman("20200701","Jack",8000,0.15)
manager = Manager("20200801","Tom",10000)
salemanger = Salemanger("20201111","shy",6000,20000,0.2)
m1 = worker.Calculate_salary()
m2 = salesman.Calculate_salary()
m3 = manager.Calculate_salary()
m4 = salemanger.Calculate_salary()print(f"{worker.name}:{m1}\n{salesman.name}:{m2}\n{manager.name}:{m3}\n{salemanger.name}:{m4}")

面向对象,继承封装的应用相关推荐

  1. 面向对象---继承/封装/多肽

    1. 继承 比较官方的说法就是: 继承(英语:inheritance)是面向对象软件技术当中的一个概念. 如果一个类别A"继承自"另一个类别B,就把这个A称为"B的子类别 ...

  2. python面向对象编程 -- 封装、继承

    面向对象编程 -- 封装.继承 面向对象编程三要素:封装.继承和多态.本文主要看和封装.继承相关的概念:在python中多态的概念比较模糊,本文不做讨论. 1 封装 封装:将数据和操作组装到一起,对外 ...

  3. python面向对象编程(封装与继承)

    一. 面向过程编程语言 "面向过程"(Procedure Oriented)是一种以过程为中心的编程思想.分析出解决问题所需要的步 骤,然后用函数把这些步骤一步一步实现,使用的时候 ...

  4. 面向对象之三大特性:继承,封装,多态

    python面向对象的三大特性:继承,封装,多态. 1. 封装: 把很多数据封装到⼀个对象中. 把固定功能的代码封装到⼀个代码块, 函数, 对象, 打包成模块. 这都属于封装的思想. 具体的情况具体分 ...

  5. java程序员从笨鸟到菜鸟之_Java程序员从笨鸟到菜鸟之(二)面向对象之封装,继承,多态(上)...

    Java是一种面向对象的语言,这是大家都知道的,他与那些像c语言等面向过程语言不同的是它本身所具有的面向对象的特性--封装,继承,多态,这也就是传说中的面向对象三大特性 一:从类和对象开始说起: Oo ...

  6. 如何理解面向对象的封装、继承、多态

    如何理解面向对象的封装.继承.多态 面向对象可以说是一种对现实是事物的抽象,将一类事物抽象成一个类,类里面包含了这类事物具有的公共部分,以及我们对这些部分的操作,也就是对应的数据和过程. 面向对象思想 ...

  7. java面向对象(封装、重载、构造、继承)

    在上节课中主要学习了"面向对象"的封装.方法的重载. 1.类的继承:是指在一个现有类的基础上去构建一个新的类,构建出来的新类被称作子类,现有类被称作父类或者基类,子类会自动拥有父类 ...

  8. W6_面向对象_封装_继承_多继承_多态

    W6_面向对象_封装_继承_多继承_多态 80.81.82.83.第02章节-Python3.5-面向对象介绍 84.第05章节-Python3.5-实例变量与类变量 85.第06章节-Python3 ...

  9. Python中的面向对象(类的实例化,面向对象的封装、继承与多态)

    文章目录 1.面向对象的定义 1.1 定义类.属性和方法 1.2 如何将类转化为对象(实例化) 1.3 构造方法 2.面向对象的封装 2.1 封装的定义 2.2 封装的练习 1.体重与跑步 2.栈的功 ...

  10. python面向对象(1) —— 封装

    面向对象由封装.继承和多态组成 封装:属性和方法写到类里 继承:子类继承父类方法与属性 多态:子类重写父类后再实例化为不同对象产生不同结果 类与对象 class Gun():def __init__( ...

最新文章

  1. 【C++】LINK类型错误分析记录
  2. 配置管理和Java开发_Java开发环境之------MyEclipse中服务器Server的配置,管理和启动...
  3. 新视野教育计算机题库,校园网.新视野教育计算机等级考试《二级公共基础》课后习题答案...
  4. 人为什么会出轨?麻省理工学院告诉你:男女配对的真相
  5. python转换为c代码_bash 转换为C代码
  6. LeetCode 1286. 字母组合迭代器(回溯/位运算)
  7. java 写传奇游戏吗,文字版传奇游戏
  8. Springboot 自定义Tomcat默认Servlet 资源路径
  9. 固定td 样式 随 内容 溢出
  10. 海尔智能微型计算机,微型计算机 Microcomputers
  11. pytorch autograd.grad
  12. 啤酒游戏及其牛鞭效应的vensim模拟
  13. 【游戏开发实战】下载原神模型,PMX转FBX,导入到Unity中,卡通渲染,绑定人形动画(附Demo工程)
  14. 雷达通信一体化波形设计综述
  15. 视频分辨率过高,导致部分手机播放失败
  16. 「公众号吸粉神级插件」实现网站下载文件需要公众号获取验证码
  17. 改革IMF首先要增加中国发言权
  18. 前段时间 qq大战 360..
  19. mysql命令创库创表_MySQL基础创库创表知识
  20. Papi酱: 左手奶瓶右手尿布× 左手papitube右手娱乐圈√

热门文章

  1. 阿里巴巴达摩院又被点名表扬了,这一次是要“拯救世界”?
  2. opencv 去高光
  3. 刚注册好领了营业执照的公司可以申请软件著作权登记证书么?
  4. 红色警戒最新版本哪个服务器好,红色警戒2里面哪个版本最好玩?
  5. 数据存储---内存列式数据库KDB+(Q)文档
  6. nc65右键生成菜单_NC常见问题处理
  7. 盘点华为系工控企业——中国A股上市公司最多的创业体系
  8. 星际争霸II对抗 PYSC2平台 深度强化学习 学习笔记(一)- 环境搭建
  9. 【软件工程】机房文档--可行性研究报告
  10. ThreeJS —— 机房Demo(二)