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封装、继承、函数重写、类属性、对象属性、类函数、对象函数、序列化、反序列化、pickle相关推荐

  1. python数据采集仪_数据采集卡支持python么深入理解Python生成器(Generator)

    我们可以通过列表生成式简单直接地创建一个列表,但是受到内存限制,列表容量肯定是有限的.而且,创建一个包含100万个元素的列表,不仅占用很大的存储空间,而且如果我们仅仅需要访问前面几个元素,那后面绝大多 ...

  2. 让python飞:形象理解python 全局变量、局部变量、内部函数、外部函数、ascii码、内置函数

    Day06凯尔特与佛印闯双蛇洞 秦始皇得知有一兵马俑逃脱,立即派出大内高手凯尔特前去捉拿.凯尔特一路追踪到熊山寺,但寺门紧闭,遂从后门入寺. 凯尔特悄悄溜到后山,见到高台周围有许多狮子蠢蠢欲睡.高台上 ...

  3. 让python飞:形象理解python 栈、队列、lambda、生成器、迭代器、模块

    Day10 棒球和球棒与水晶火炉和五彩宝箱 棒球和球棒来到了足球场,要打棒球!但是球场工作人员不同意.棒球和球棒表示不服.球场工作人员说,这样吧,你按我们的规则完成任务,我们就让你们在这里玩.这里有两 ...

  4. 用来表示python代码块的是什么_三分钟带你用简单的Python代码深入理解Python中的元类...

    互联网的数据爆炸式的增长,而利用 Python 爬虫我们可以获取大量有价值的数据 类也是对象 在理解元类前,需要先掌握Python中的类.在大多数编程语言中,类就是一组描述如何生成对象的代码段.在Py ...

  5. python codec_深入理解Python特性

    第1章 简介 1 1.1 什么是Python技巧 1 1.2 本书作用 2 1.3 如何阅读本书 2 第2章 Python整洁之道 4 2.1 用断言加一层保险 4 2.1.1 示例:Python中的 ...

  6. python作用域的理解-python中对变量的作用域LEGB、闭包、装饰器基本理解

    一.作用域 在Python程序中创建.改变.查找变量名时,都是在一个保存变量名的空间中进行,我们称之为命名空间,也被称之为作用域.python的作用域是静态的,在源代码中变量名被赋值的位置决定了该变量 ...

  7. python装饰器-理解Python装饰器(Decorator)

    理解Python装饰器(Decorator) Python装饰器看起来类似Java中的注解,然鹅和注解并不相同,不过同样能够实现面向切面编程. 想要理解Python中的装饰器,不得不先理解闭包(clo ...

  8. python语言的理解-Python动态语言理解

    1. 动态语言的定义 动态编程语言 是 高级程序设计语言 的一个类别,在计算机科学领域已被广泛应用.它是一类 在运行时可以改变其结构的语言 :例如新的函数.对象.甚至代码可以被引进,已有的函数可以被删 ...

  9. 【Python】深入理解Python函数的9个黄金法则

    编程离不开函数.Python的函数除了具备传统意义上的函数特征外,又被赋予了其他一些特性,让它更灵活.更强大.这篇文章结合之前我推荐的一本Python宝书,又添加一些我的实践和理解,总结了深入理解Py ...

最新文章

  1. 【H2645】H.264的宏块和H.265的编码树单元总结
  2. Know more about AWR Parse Statistics
  3. mysql 秒杀 隔离级别_MySQL 四种隔离级别详解,看完吊打面试官
  4. GPU Gems1 - 2 水刻蚀的渲染
  5. [导入]【翻译】WF从入门到精通(第二章):workflow运行时
  6. Mac OS X 10.8.3反编译Android apk
  7. [zz]基于libvirt API监测xen初探
  8. C语言基础练习题初学者可参考
  9. WINDOWS 98 启动盘(加强版)
  10. dbf转成excel_excel怎么转为dbf? Excel与DBF互相转换的教程
  11. DIY多快充协议太阳能充电器!----BOOST升压电路
  12. STC15单片机-数码管显示PCB板温度(TM1620驱动芯片使用介绍)
  13. VC中CDockablePane使用心得
  14. 4.0版本的wed.xml。 中间的部分是配置springMVC的。
  15. Sepic变换器的基本原理
  16. Cadence Allegro使用过程中出现的常见问题-原理图和PCB
  17. Java面试题总结-2022版
  18. 那些年门户网站开发应该遵循的原则
  19. oracle的dump头文件用ue显示,关于Oracle dmp文件导入随笔
  20. 采用Rhino在JAVA中运行JavaScript

热门文章

  1. 直播平台怎么搭建,老司机带你了解
  2. 【idea】【springboot】【jar】导出jar运行后报错java.lang.ClassNotFoundException 及springboot在idea导出jar包的正确方法
  3. 矩阵求导常用公式(避坑)+矩阵的模和矩阵的绝对值的求导
  4. 微信小程序border padding margin
  5. 关于使用jquery.wordexport.js如何设置导入文档的页边距问题(超详细,亲测可用)
  6. 直线与圆位置关系的c语言,直线和圆的位置关系说课稿
  7. HTML5标签canvas制作平面图
  8. 小米手环解锁MacOS系统笔记本MacBookPro
  9. Objective-C block详解及回调
  10. iOS 播放系统声音系统声音大全