面向对象,继承封装的应用
使用面向对象思想,利用封装和继承书写代码
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()
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()
# -*- 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. 继承 比较官方的说法就是: 继承(英语:inheritance)是面向对象软件技术当中的一个概念. 如果一个类别A"继承自"另一个类别B,就把这个A称为"B的子类别 ...
- python面向对象编程 -- 封装、继承
面向对象编程 -- 封装.继承 面向对象编程三要素:封装.继承和多态.本文主要看和封装.继承相关的概念:在python中多态的概念比较模糊,本文不做讨论. 1 封装 封装:将数据和操作组装到一起,对外 ...
- python面向对象编程(封装与继承)
一. 面向过程编程语言 "面向过程"(Procedure Oriented)是一种以过程为中心的编程思想.分析出解决问题所需要的步 骤,然后用函数把这些步骤一步一步实现,使用的时候 ...
- 面向对象之三大特性:继承,封装,多态
python面向对象的三大特性:继承,封装,多态. 1. 封装: 把很多数据封装到⼀个对象中. 把固定功能的代码封装到⼀个代码块, 函数, 对象, 打包成模块. 这都属于封装的思想. 具体的情况具体分 ...
- java程序员从笨鸟到菜鸟之_Java程序员从笨鸟到菜鸟之(二)面向对象之封装,继承,多态(上)...
Java是一种面向对象的语言,这是大家都知道的,他与那些像c语言等面向过程语言不同的是它本身所具有的面向对象的特性--封装,继承,多态,这也就是传说中的面向对象三大特性 一:从类和对象开始说起: Oo ...
- 如何理解面向对象的封装、继承、多态
如何理解面向对象的封装.继承.多态 面向对象可以说是一种对现实是事物的抽象,将一类事物抽象成一个类,类里面包含了这类事物具有的公共部分,以及我们对这些部分的操作,也就是对应的数据和过程. 面向对象思想 ...
- java面向对象(封装、重载、构造、继承)
在上节课中主要学习了"面向对象"的封装.方法的重载. 1.类的继承:是指在一个现有类的基础上去构建一个新的类,构建出来的新类被称作子类,现有类被称作父类或者基类,子类会自动拥有父类 ...
- W6_面向对象_封装_继承_多继承_多态
W6_面向对象_封装_继承_多继承_多态 80.81.82.83.第02章节-Python3.5-面向对象介绍 84.第05章节-Python3.5-实例变量与类变量 85.第06章节-Python3 ...
- Python中的面向对象(类的实例化,面向对象的封装、继承与多态)
文章目录 1.面向对象的定义 1.1 定义类.属性和方法 1.2 如何将类转化为对象(实例化) 1.3 构造方法 2.面向对象的封装 2.1 封装的定义 2.2 封装的练习 1.体重与跑步 2.栈的功 ...
- python面向对象(1) —— 封装
面向对象由封装.继承和多态组成 封装:属性和方法写到类里 继承:子类继承父类方法与属性 多态:子类重写父类后再实例化为不同对象产生不同结果 类与对象 class Gun():def __init__( ...
最新文章
- 【C++】LINK类型错误分析记录
- 配置管理和Java开发_Java开发环境之------MyEclipse中服务器Server的配置,管理和启动...
- 新视野教育计算机题库,校园网.新视野教育计算机等级考试《二级公共基础》课后习题答案...
- 人为什么会出轨?麻省理工学院告诉你:男女配对的真相
- python转换为c代码_bash 转换为C代码
- LeetCode 1286. 字母组合迭代器(回溯/位运算)
- java 写传奇游戏吗,文字版传奇游戏
- Springboot 自定义Tomcat默认Servlet 资源路径
- 固定td 样式 随 内容 溢出
- 海尔智能微型计算机,微型计算机 Microcomputers
- pytorch autograd.grad
- 啤酒游戏及其牛鞭效应的vensim模拟
- 【游戏开发实战】下载原神模型,PMX转FBX,导入到Unity中,卡通渲染,绑定人形动画(附Demo工程)
- 雷达通信一体化波形设计综述
- 视频分辨率过高,导致部分手机播放失败
- 「公众号吸粉神级插件」实现网站下载文件需要公众号获取验证码
- 改革IMF首先要增加中国发言权
- 前段时间 qq大战 360..
- mysql命令创库创表_MySQL基础创库创表知识
- Papi酱: 左手奶瓶右手尿布× 左手papitube右手娱乐圈√
热门文章
- 阿里巴巴达摩院又被点名表扬了,这一次是要“拯救世界”?
- opencv 去高光
- 刚注册好领了营业执照的公司可以申请软件著作权登记证书么?
- 红色警戒最新版本哪个服务器好,红色警戒2里面哪个版本最好玩?
- 数据存储---内存列式数据库KDB+(Q)文档
- nc65右键生成菜单_NC常见问题处理
- 盘点华为系工控企业——中国A股上市公司最多的创业体系
- 星际争霸II对抗 PYSC2平台 深度强化学习 学习笔记(一)- 环境搭建
- 【软件工程】机房文档--可行性研究报告
- ThreeJS —— 机房Demo(二)