IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Python知识库 -> 让python飞:形象理解python封装、继承、函数重写、类属性、对象属性、类函数、对象函数、序列化、反序列化、pickle -> 正文阅读

[Python知识库]让python飞:形象理解python封装、继承、函数重写、类属性、对象属性、类函数、对象函数、序列化、反序列化、pickle

在这里插入图片描述
Day12大呲花参观姚明汽车厂
听闻姚明在美国办了个车厂,上海烟花厂的一箱炮竹不淡定了。他们决定要去向姚老板祝贺。所以,他们决定把自己封装在一个集装箱里走海运去美国。
到达美国后,姚明热情的接待了他们。有个叉车跑过来告诉姚老板,有个客户觉得车座太小,想换一个大的,结果换的那个太大,就放在车顶上去了,现在跑在街上巨丑无比。姚老板一听这哪行啊。我们送给客户的构造机也不能瞎用啊。这得设置一些条件,不能让他们随意设置东西
(在设计完类,外界创建对象通过.的形式访问(设置)属性,可能会出现跟现实情况不符的混乱数据,那么我们就将属性的设置权没收(外界不能直接通过.调用属性))大呲花说,这好办啊,在大铁架下方放一个大袋鼠,把客户的要求放进袋鼠的袋子里进行判断,让那些符合条件的配置要求通过,其他的不让通过

在类的内部提供外界额外的访问方式(定义setter和getter方法),并且在需要的时候,可以在函数的内部加入数据合法性的校验;对于setter函数,命名:set属性名(首字母大写)
设置值(__age): 
        def setAge(self,age): 
                self.__age = age

袋鼠还可以把纸条拿出来进行阅读

对于getter函数,命名:get属性名(首字母大写)        
获取值(__age): 
        def getAge(self): 
                return self.__age

姚明一听,对此表示赞同!
这时,一辆大象车呼啸而过,大呲花给吓坏了。姚明告诉他,这辆车就是从他的厂生产出来的车改造的。论辈分,他得叫我的车叫爸爸
(两部分组成,一部分我们称为父类(基类、超类、superclass),另一部分我们称为子类(派生类、subclass),子类可以使用父类中的成员(使用权))有的车只经过一次改造,成为单继承车。

class Teacher(Person): 
    def __init__(self,name,age,salary): 
        print('我是teacher类的构造函数。。。') 
        self.salary = salary 
        #调用父类构造函数   目的:父类的属性由父类自己赋值 
        #在子类构造函数中显示的调用其父类构造 
        # super(Teacher,self).__init__(name,age) 
        # super().__init__(name,age) 
        Person.__init__(self,name,age)

这样改造后的车既可以有父类的样式,也有自己的样式,既有父类的功能,也有自己的功能。
还有一种车经过多次改造,我们管这种车叫多重继承车,它是单继承车的延伸。还有一种车是吸取了多种风格改造出来的,我们把它叫多继承车

from father import Father 
from mother import Mother 
''' 
定义Child类同时继承Father和Mother类 
''' 
class Child(Father,Mother): 
    def __init__(self,money,faceValue,work): 
        self.work = work 
        Father.__init__(self,money) 
        Mother.__init__(self,faceValue)

改造的时候,有的客户对我们的车某些功能不太满意,想改进一下,这个我们也是支持的。但是我们的名字不能改

函数重写(override)前提:必须有继承性 
原因: 
        父类中的功能(函数),子类需要用,但是父类中函数的函数体内容和我现在要执行的逻辑还不相符 
        那么可以将函数名保留(功能还是此功能,但是将函数体重构; 
        注意: 子类重写父类的函数,除了函数体以外的部分,直接复制父类的即可)

大呲花问姚明这些改造车都是在哪加工的呢?姚明告诉大呲花,我们的厂里生产时给车设置一些基本属性,完了呢给它点功能

类函数: 
格式: 
@classmethod 
def 函数名(cls,...)cls可以理解为当前类的类名

它到客户手中,我们还给客户配置了一个铁架子,用来对车进行改造

(对象函数:格式: def 函数名(self,...) 
self可以理解为当前对象或者正在被创建的对象)

两者的关系是以客户改造为主

类可以调用类(属性、函数),不能调用对象(属性、函数),对象可以调用类(属性、函数),也能调用对象(属性、函数)。我们可以用别的方式解决,方式如下: 
        先进行对象实例化 --> d = cls(100) 
        d就可以随意的去访问对象属性和对象函数了)

大呲花开了辆车准备兜风,开完后,这辆车就被直接放到一个大的类似于水泥搅拌机的机器里,从下面出来就变成了一箱纸。这个机器叫pickle,它有两个口,上面有个进口叫dump(dump(obj, fr):将obj对象序列化到文件中(取决于fr中的path)),它能把车变成文字记录在纸上。下面的小口叫load(load(fw):将fw(path中的数据)加载到程序,以对象返回)它能把一箱纸重新变成车。

#实例化Person对象
# p = Person('貂蝉',18,'女',162.0,84,'靓丽')
#
# fw = open(r'person.txt','wb')

#对象序列化操作:将程序中的对象p序列化到person.txt文件中保存起来
# pickle.dump(p,fw)
#
# fw.close()

# fr = open(r'person.txt','rb')

#对象反序列化操作:将person.txt中的二进制数据反序列化到程序中,还原成为一个Person对象
# p1 = pickle.load(fr)
# print(p1,type(p1))
#
# fr.close())
  Python知识库 最新文章
Python中String模块
【Python】 14-CVS文件操作
python的panda库读写文件
使用Nordic的nrf52840实现蓝牙DFU过程
【Python学习记录】numpy数组用法整理
Python学习笔记
python字符串和列表
python如何从txt文件中解析出有效的数据
Python编程从入门到实践自学/3.1-3.2
python变量
上一篇文章      下一篇文章      查看所有文章
加:2021-09-10 10:48:01  更:2021-09-10 10:50:13 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年12日历 -2024/12/27 13:22:54-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码
数据统计