Python高级培训第一次作业(寒假)
面向对象编程
类(Class): 用来描述具有相同的属性和方法的对象的集合。它定义了该集合中每个对象所共有的属性和方法。对象是类的实例。
方法:类中定义的函数。
类变量:类变量在整个实例化的对象中是公用的。类变量定义在类中且在函数体之外。
方法重写:如果从父类继承的方法不能满足子类的需求,可以对其进行改写,这个过程叫方法的覆盖(override),也称为方法的重写。
实操1:
1.小猫爱吃鱼,小猫爱喝水
分析
- 定义一个猫类 cat
- 定义两个方法 eat 和 drink
# 定义类
class Cat():''这是一个猫类"def eat(self):print("小猫爱吃鱼")def drink(self):print("小猫爱喝水")# 创建猫对象
tom = Cat()
tom.eat()
tom.drink()print(tom)
address = id(tom)
print('%x'%address)
运行结果:
小猫爱吃鱼
小猫爱喝水<__main__.Cat object at 0x0000027C29476F08>
27c29476f08
引用
- 在python中使用类创建对象后,tom变量中仍然记录的是对象在内存中的地址,也就是tom变量引用了新建的猫的对象
- 使用print输出对象变量,输出这个变量引用的对象是由哪一个类创建的对象,以及在内存中的地址(提示:在计算机中,通常使用十六进制来表示内存地址)
- %d可以以十进制输出数字,%x以十六进制输出数字
方法中的self参数
给对象增加属性
在类的外部代码中直接通过.
设置一个属性。
2.由哪一个对象调用的方法,方法内的self
就是哪一对象的引用在类封装的方法内部,
self
就表示当前调用方法的对象自己
# 定义类
class Cat():def eat(self):print("%s爱吃鱼"%self.name)def drink(self):print("%s爱喝水"%self.name)# 创建猫对象
tom = Cat()
tom.name = "Tom"
tom.eat()
tom.drink()
Tom爱吃鱼
Tom爱喝水
初始化方法
1.__init__方法,是对象的内置方法,专门用来定义一个类具有哪些属性的方法
2.在开发中,希望使用print
输出对象变量时,能够打印自定义的内容,可以用__str__
这个内置方法
注意:__str__方法必须返回一个字符串
# 定义类
class Cat():def __init__(self,n):self.name = nprint("%s爱吃鱼"%self.name)def __del__(self):print("%s爱喝水"%self.name)def __str__(self):return "我是小猫[%s]"%self.name# 创建猫对象
tom = Cat('Tom')
print(tom)
Tom爱吃鱼
我是小猫[Tom]
Tom爱喝水
3.类似的专有方法:
__repr__ : 打印,转换
__setitem__ : 按照索引赋值
__getitem__: 按照索引获取值
__len__: 获得长度
__cmp__: 比较运算
__call__: 函数调用
__add__: 加运算
__sub__: 减运算
__mul__: 乘运算
__truediv__: 除运算
__mod__: 求余运算
__pow__: 乘方
实操2
"""
需求:
1.房子有户型、总面积和家具名称列表
新房子没有任何家具
2.家具(HouseItem)有名字和占地面积,其中
席梦思(bed)占地4平米
衣柜(chest)占地2平米
餐桌(table)占地1.5平米
3.将以上家具添加到房子中
4.打印房子时要求输出:户型、总面积,剩余面积,家具名称列表
"""
# 创建家具类
class HouseItem():def __init__(self,name,area):self.name = nameself.area = areadef __str__(self):return "%s,占地面积%0.2f"%(self.name,self.area)# 创建房子类
class House():def __init__(self,house_type,area):self.house_type = house_typeself.area = area# 房子剩余面积self.free_area = area# 家具名称列表self.item_list = []'''python 能够自动的将一对括号内部的代码连接在一起'''def __str__(self):return ("户型:%s\n总面积:%.2f[剩余面积:%.2f]\n家具:%s"%(self.house_type,self.area,self.free_area ,self.item_list))def add_item(self,item):print("要添加的%s"%item)
# 1.判断家具的面积if item.area > self.free_area :print("%s的面积太大,无法添加"%item.name)return
# 2.将家名称添加到列表中self.item_list.append(item.name)# 3.计算剩余面积self.free_area -= item.area# 创建家具对象
bed = HouseItem("席梦思",4)
chest = HouseItem("衣柜",2)
table = HouseItem("床",1.5)print(bed)
print(chest)
print(table)# 创建房对象
house = House("两房一厅",80)# 添加家具
house.add_item(bed)
house.add_item(chest)
house.add_item(table)
print(house)
结果
席梦思,占地面积4.00
衣柜,占地面积2.00
床,占地面积1.50
要添加的席梦思,占地面积4.00
要添加的衣柜,占地面积2.00
要添加的床,占地面积1.50
户型:两房一厅
总面积:80.00[剩余面积:72.50]
家具:['席梦思', '衣柜', '床']Process finished with exit code 0
Python高级培训第一次作业(寒假)相关推荐
- 高级软件工程第一次作业--准备
1) 回想一下你对计算机/软件工程专业的畅想 考研之所以选择计算机专业,是因为本科就是这个专业.不去跨专业,是因为觉得换个专业考,比起那些科班出身的人,考上的机率会更小,也有一部分原因是因为比起计 ...
- 高级软件工程第一次作业
个人情况介绍: 经历 简要描述个人在软件开发方面的学习或工作经历,描述你做的最复杂的软件项目/作业,仅限适合公开的内容. 本人电子信息专业,研究方向是SLAM即时定位与地图构建,本科期间的毕业设计 ...
- Python高级培训——Num2之类的方法重写、property、运算符重载
情况一:子类需要自动调用父类的方法:子类不重写__init__()方法,实例化子类后,会自动调用父类的__init__()的方法. 情况二:子类不需要自动调用父类的方法:子类重写__init__()方 ...
- 2018上第一次作业
要求一:完成PTA作业 答:作业已经完成! 要求二:pta作业编程题目的解题思路和调试过程记录 C高级语言第一次作业(1) 完成情况如图: 题目一:计算两个数的和与差 1.设计思路 (1)算法: 第一 ...
- 【办公类-01】20210910 Python VSC制作批量教师培训的作业模板
活动背景: 最近上海市闵行区开展了<闵行区教师信息技术应用能力提升工程2.0实施方案>)花了差不多两周时间,吃透培训视频的内容,在9月8日刚刚上传校本培训实施方案,结果9月9日 ...
- 【NPU2021寒假TRN】第一次作业
[NPU2021寒假TRN]第一次作业 题目 文章目录 [NPU2021寒假TRN]第一次作业 A B D E F G H A 用链表储存地铁站信息,按照起始位置升序排列,遍历每一个地铁站终止位置前的 ...
- 寒假Python第三天作业
寒假Python第三天作业作业 1:计算器: 请输入两个数和一个符号,完成两个数的+ - * / % // ** a=float (input ("请输入第一个数 : ")) b= ...
- 【高级软件工程课后作业】
第一次作业 1.简述研究生阶段如何提高自己的学习能力. ①通过阅读大量的学术论文.文献资料以及国内外期刊,培养自己专业学术论文的写作能力 ②通过学习过程中的小组合作,提高自身的团队协作能力,提高与人沟 ...
- python高级编程之网络编程
Python高级之网络编程 端口 端口分类 知名端口 动态端口 查看端口 socket简介 电脑上进程之间的通信 什么是socket 创建socket 使用UDP套接字发送数据 使用UDP套接字接受数 ...
最新文章
- 港中文自动驾驶点云上采样方法
- 解压zip_康巴汉子“型男”zip,点击解压
- matlab求adc信号的信噪比,关于ADC的信噪比 - pengyouxiaohui的日志 - EETOP 创芯网论坛 (原名:电子顶级开发网) -...
- 6 有序集合ZSet(Sorted Set)
- inotify 实时的Linux文件系统事件监控
- MTK平台的启动流程(secureboot)
- 【杂谈】如何从数据准备,模型设计与调优,训练到部署完成整个深度学习算法流程...
- JavaScript对象和数组
- MyBatis-Plus EntityWrapper的使用 wrapper le ge
- 《Head First设计模式》第八章笔记-模板方法模式
- Linux驱动之设备模型(1)
- chrome调式工具
- Ps 初学者教程,如何使用色阶功能提高照片的对比度和亮度?
- R语言怎么写积分_2. 角速度的积分
- 如何使用Blender建模“苹果”
- foo bar foobar?
- DEEPIN 设置U盘启动
- 设定是否使用IOB中的寄存器
- Apple Silicon M1 MacBook Air上手详细评测M1的强大!
- MyBatis01:第一个程序