面向对象编程

类(Class): 用来描述具有相同的属性和方法的对象的集合。它定义了该集合中每个对象所共有的属性和方法。对象是类的实例
方法:类中定义的函数
类变量:类变量在整个实例化的对象中是公用的。类变量定义在类中且在函数体之外。
方法重写:如果从父类继承的方法不能满足子类的需求,可以对其进行改写,这个过程叫方法的覆盖(override),也称为方法的重写。

实操1:

1.小猫爱吃鱼,小猫爱喝水
分析

  1. 定义一个猫类 cat
  2. 定义两个方法 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. 高级软件工程第一次作业--准备

    1) 回想一下你对计算机/软件工程专业的畅想   考研之所以选择计算机专业,是因为本科就是这个专业.不去跨专业,是因为觉得换个专业考,比起那些科班出身的人,考上的机率会更小,也有一部分原因是因为比起计 ...

  2. 高级软件工程第一次作业

    个人情况介绍: 经历 简要描述个人在软件开发方面的学习或工作经历,描述你做的最复杂的软件项目/作业,仅限适合公开的内容. ​ 本人电子信息专业,研究方向是SLAM即时定位与地图构建,本科期间的毕业设计 ...

  3. Python高级培训——Num2之类的方法重写、property、运算符重载

    情况一:子类需要自动调用父类的方法:子类不重写__init__()方法,实例化子类后,会自动调用父类的__init__()的方法. 情况二:子类不需要自动调用父类的方法:子类重写__init__()方 ...

  4. 2018上第一次作业

    要求一:完成PTA作业 答:作业已经完成! 要求二:pta作业编程题目的解题思路和调试过程记录 C高级语言第一次作业(1) 完成情况如图: 题目一:计算两个数的和与差 1.设计思路 (1)算法: 第一 ...

  5. 【办公类-01】20210910 Python VSC制作批量教师培训的作业模板

    活动背景:       最近上海市闵行区开展了<闵行区教师信息技术应用能力提升工程2.0实施方案>)花了差不多两周时间,吃透培训视频的内容,在9月8日刚刚上传校本培训实施方案,结果9月9日 ...

  6. 【NPU2021寒假TRN】第一次作业

    [NPU2021寒假TRN]第一次作业 题目 文章目录 [NPU2021寒假TRN]第一次作业 A B D E F G H A 用链表储存地铁站信息,按照起始位置升序排列,遍历每一个地铁站终止位置前的 ...

  7. 寒假Python第三天作业

    寒假Python第三天作业作业 1:计算器: 请输入两个数和一个符号,完成两个数的+ - * / % // ** a=float (input ("请输入第一个数 : ")) b= ...

  8. 【高级软件工程课后作业】

    第一次作业 1.简述研究生阶段如何提高自己的学习能力. ①通过阅读大量的学术论文.文献资料以及国内外期刊,培养自己专业学术论文的写作能力 ②通过学习过程中的小组合作,提高自身的团队协作能力,提高与人沟 ...

  9. python高级编程之网络编程

    Python高级之网络编程 端口 端口分类 知名端口 动态端口 查看端口 socket简介 电脑上进程之间的通信 什么是socket 创建socket 使用UDP套接字发送数据 使用UDP套接字接受数 ...

最新文章

  1. 港中文自动驾驶点云上采样方法
  2. 解压zip_康巴汉子“型男”zip,点击解压
  3. matlab求adc信号的信噪比,关于ADC的信噪比 - pengyouxiaohui的日志 - EETOP 创芯网论坛 (原名:电子顶级开发网) -...
  4. 6 有序集合ZSet(Sorted Set)
  5. inotify 实时的Linux文件系统事件监控
  6. MTK平台的启动流程(secureboot)
  7. 【杂谈】如何从数据准备,模型设计与调优,训练到部署完成整个深度学习算法流程...
  8. JavaScript对象和数组
  9. MyBatis-Plus EntityWrapper的使用 wrapper le ge
  10. 《Head First设计模式》第八章笔记-模板方法模式
  11. Linux驱动之设备模型(1)
  12. chrome调式工具
  13. Ps 初学者教程,如何使用色阶功能提高照片的对比度和亮度?
  14. R语言怎么写积分_2. 角速度的积分
  15. 如何使用Blender建模“苹果”
  16. foo bar foobar?
  17. DEEPIN 设置U盘启动
  18. 设定是否使用IOB中的寄存器
  19. Apple Silicon M1 MacBook Air上手详细评测M1的强大!
  20. MyBatis01:第一个程序

热门文章

  1. UBT14:ubuntu安装Drawing
  2. 计算机网络中计算机通过率,自考计算机通过率高吗
  3. Unity + Kinect基本上所有的手势二次封装(一)
  4. Ajax--请求的基本操作 设置请求参数
  5. rsa算法php,简化版(小素数版)RSA算法的PHP实现
  6. 百度与谷歌技术实力比较
  7. CollageIt - [照片拼贴,照片整合]
  8. 一次学神and农夫and“i春秋”的心理交锋
  9. 还在if-else行走天下?试试【策略模式】吧
  10. 车速与档位匹配关系_车速与档位的关系汇总