零基础学Python课后实战第七章

news/2024/10/22 6:40:50/

零基础学Python课后实战第七章

  • tips
  • 实战一:修改手机默认语言
  • 实战二:给信用卡设置默认密码
  • 实战三:打印每月销售明细

tips

对象:对象是事物存在的实体,如一个人。
通常将对象划分为两部分,即动态部分和静态部分。静态部分被称为“属性”,动态部分指的是对象的行为。

:是封装对象的属性和行为的载体,表示具有相同属性和方法的对象的集合。对象是类的实例。
在这里插入图片描述
面向对象程序设计的三大基本特征:封装、继承和多态。
封装是面向对象编程的核心思想,将对象的属性和行为封装起来,其载体就是类,类通常会对客户隐藏实现其细节,这就是封装的思想。
继承:可以把平行四边形类看作是继承四边形类后产生的类,将类似于平行四边形的类称为子类,类似于四边形的类称为父类或超类。子类的实例都是父类的实例,但不能说父类的实例是子类的实例。子类通过继承复用了父类的属性和行为,同时又添加了子类特有的属性和行为。
多态:将父类对象应用于子类的特征就是多态。例如,创建一个螺丝类,然后再创建两个类,短螺丝类和长螺丝类(粗细相同,螺纹密度也相同,即具有相同的特征),还具有不同的特征(长和短,长的可以固定大型支架,短的可以固定生活家具)。一个螺丝衍生出不同的子类,子类继承父类的同时也具备了自己的特征,并且能够实现不同的效果,这就是多态的结构。
例子:

class Geese:          #以大雁为例声明一个类'''大雁类'''pass
wildGoose = Geese()   #创建大雁类的实例
print(wildGoose)

运行结果

<__main__.Geese object at 0x000001E3EAFC7A90>

从结果中可以看出,wildGoose是Geese类的实例。

创建__int__()方法:

例子:以大雁为例声明一个类,并创建__int__()方法

class Geese:             #以大雁为例声明一个类'''大雁类'''def __init__(self):  #构造方法print("我是大雁类!")
wildGoose = Geese()      #创建大雁类的实例

运行结果

我是大雁类!

当自定义一些参数时用逗号隔开,如

def __init__(self,beak,wing,claw):  #构造方法

int()方法和实例方法一样,必须包含一个self参数,并且第一个参数必须是self。另外,比如定义一个实例方法fly(),即

def  fly(self, state)

在调用实例方法时用实例名称和点(.)操作符,即

wildGoose.fly("我会飞")

访问限制:
为保证类内部的某些属性或方法不被外部所访问,可以在属性或方法名名前面添加单下划线、双下划线或首尾加双下划线,从而限制访问权限。
1)首尾双下划线表示定义特殊方法,一般是系统定义名字,如__int__()。
2)以单下划线开头的表示保护类型的成员,只允许类本身和子类进行访问。保护属性可以通过实例名进行访问。
3)以双下划线开头的表示私有类型的成员,只允许定义该方法的类本身进行访问,不能通过类的实例进行访问,但可以通过“类的实例名 ._ 类名 __xxx”方式访问。

@property :将一个方法转换为属性。将方法转换为属性后,可以直接通过方法名来访问方法,不用加小括号()。为属性添加安全保护机制时,可以使用@property实现只读属性。但通过@property 转换后的属性不能重新赋值。
@show.setter :设置setter方法,让属性可修改。

实战一:修改手机默认语言

class Phone:                              #定义手机类'''手机类'''def __init__(self,language = '英文'): #构造方法if language == '英文':print("智能手机的默认语言为" + language)else:print("将智能手机的默认语言设置为" + language) 
Phone()            #无参数
Phone('中文')      #有参数  

运行结果

智能手机的默认语言为英文
将智能手机的默认语言设置为中文

实战二:给信用卡设置默认密码

class Card:'''信用卡类'''def __init__(self,number,code = "123456"):if code == "123456":print("信用卡" + str(number) + "的默认密码为"+ str(code))else:print("重置信用卡" + str(number) + "的密码为" + str(code))
Card("4013735633800642")   
Card("4013735633800642","168779")  

运行结果

信用卡4013735633800642的默认密码为123456
重置信用卡4013735633800642的密码为168779

实战三:打印每月销售明细

代码来自https://www.bilibili.com/video/BV1AK4y147q2?p=3

class SaleHandler:'''销售管理类'''def __init__(self):self.__sale_data = {              "2":[('T0001','笔记本电脑'),('T0002','荣耀6X'),('T0003','iPad'),('T0004','荣耀V9'),('T0005','MACBook')]}   #{key:value}def querySaleList(self,query_month):'''根据输入月份,查询商品明细'''if query_month in self.__sale_data:print("%s月份商品销售明细如下:" % query_month)for item in self.__sale_data[query_month]:print("商品编号:%s 商品名称:%s" % item)else:print("该月份没有销售数据或输入月份有误!")
print("------销售明细-----")
sh = SaleHandler()
while True:month = input("请输入要查询的月份(例如1、2、3等):")if month == 'quit':break sh.querySaleList(month)

运行结果

------销售明细-----请输入要查询的月份(例如123等):2
2月份商品销售明细如下:
商品编号:T0001 商品名称:笔记本电脑
商品编号:T0002 商品名称:荣耀6X
商品编号:T0003 商品名称:iPad
商品编号:T0004 商品名称:荣耀V9
商品编号:T0005 商品名称:MACBook请输入要查询的月份(例如123等):1
该月份没有销售数据或输入月份有误!请输入要查询的月份(例如123等):quit

http://www.ppmy.cn/news/501878.html

相关文章

02-javase-面向对象-笔记

02-javase-面向对象-ydl学习笔记 文章目录 02-javase-面向对象-ydl学习笔记一、面向对象概述1、面向对象介绍1.1、面向过程和面向对象1.2、用例子思考 2、自己创建对象 二、面向对象之封装&#xff08;encapsulation&#xff09;1、class和对象2、引用数据类型3、成员变量4、成…

三大特性(完整版)

三大特性 封装 生活案例&#xff1a; ATM&#xff0c;电线 Java中封装的理解&#xff1a; 将某些东西进行隐藏&#xff0c;然后提供相应的方式进行获取。 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-a6lkrgif-1663170214750)(C:\Users\8617…

关于android屏幕尺寸适配的整理以及思考

一直以来android屏幕尺寸相关的东西我都很薄弱&#xff0c;什么dpi, ppi, 英寸我都比较疑惑&#xff0c;本文主要是理清概念&#xff0c;理解头条的屏幕适配原理&#xff0c;以为目前我工作是如何做UI适配的。 一些基础概念 屏幕尺寸 屏幕尺寸指屏幕的对角线的长度&#xff0…

国民游戏王者荣耀的真实地图开发之路

&#x1f449;腾小云导读 相信很多人都玩过王者荣耀&#xff0c;大家在欣赏其华丽的游戏界面以及炫酷的游戏技能时&#xff0c;是否好奇过王者荣耀的地图是怎样开发出来的&#xff1f;在开发的历程中&#xff0c;都有哪些问题&#xff1f;是怎样解决的&#xff1f;本文将从其地…

vue+leaflet笔记之热力图

vueleaflet笔记之热力图 文章目录 vueleaflet笔记之热力图开发环境代码简介插件简介与安装使用简介 详细源码(Vue3) 本文介绍了Web端使用 Leaflet开发库展示热力图方法 (底图来源:天地图)&#xff0c;结合leaflet.heat插件可以很容易的做出热力图&#xff0c;通过调整其配置参…

Electron详解(二):基本使用与项目打包

一、electron的基本使用 创建一个 electron 项目 在使用Electron进行开发之前&#xff0c;您需要安装 Node.js&#xff0c;最低工作版本为 14.x&#xff0c;低于 14 的版本在后面的打包过程中可能会报错。 &#xff08;注意&#xff0c;因为 Electron 将 Node.js 嵌入到其二…

易语言读写富士通MB89R118卡 NXP15693标签源码

本示例发卡器介绍&#xff1a;Android Linux RFID读写器NFC发卡器WEB可编程NDEF文本/智能海报/-淘宝网 (taobao.com) DLL命令定义表 .版本 2 .DLL命令 蜂鸣器嘀一声, 字节型, "OUR_MIFARE.dll", "pcdbeep" .参数 xms, 整数型 .DLL命令 读取设备编号…

SpringBoot2.3集成Spring Security(二) JWT认证

项目背景 紧接上文&#xff0c;我们已经完成了 SpringBoot中集成Spring Security&#xff0c;并且用户名帐号和密码都是从数据库中获取。但是这种方式还是不能满足现在的开发需求。 使用JWT的好处&#xff1a; 无状态认证&#xff1a;JWT本身包含了认证信息和声明&#xff0…