2018年7月27日python面向对象中的继承

只要跟对象有关系的前面就要加self,面向对象操作的时候

操作系统,环境,开发软件?

函数式开发和面向对象的开发的区别: 函数式开发在每次调用的时候都需要给参数传参, 而面向对象的开发,可以把函数定义在类型里面叫做方法,只需要在创建对象的时候传一次参就可以了, 之后可以直接调用类型中的方法

面向过程的程序设计的核心是过程(流水线式思维),过程即解决问题的步骤,面向过程的设计就好比精心设计好一条 流水线,考虑周全什么时候处理什么东西。 优点是:极大的降低了写程序的复杂度,只需要顺着要执行的步骤,堆叠代码即可。 缺点是:一套流水线或者流程就是用来解决一个问题,代码牵一发而动全身。

在python 中面向对象的程序设计并不是全部。 面向对象编程可以使程序的维护和扩展变得更简单,并且可以大大提高程序开发效率 ,另外,基于面向对象的程序可 以使它人更加容易理解你的代码逻辑,从而使团队开发变得更从容。

如果父类的属性子类用不完怎么办? 一般没有这种情况,写类型之前要先分析,分析出来一个类型定义一些公共的属性为父类, 然后其他的类在父类的基础上如果需要添加属性再添加 理论都是在实践之后得出来的,所以要想明白就多练

多继承就是可以继承多个类型,用于解决一个对象有多个角色

查看文件的命令 import os os.listdir("f:")

命令行用的是gbk编码

继承中,在子类方法之中加super().父类中的方法名,子类方法执行完之后就会执行父类的方法

********************************** 1) 继承的语法结构 继承的语法结构:     class 类型(要继承的类型):         pass

    当前类型:子类     要继承的类型:父类     子类继承父类

python中:类型的后面可以不添加括号[默认继承了object类型]     class Pet: ==  class Pet(object): == class Pet():

python中查看自己到底继承了哪些父类: 用魔法属性:类型名._ _base_ _ 查看当前类型继承的父类  S._ _base__ <class '__main__.Person'>

怎么查看对象的当前类型:  通过类型的_ _class_ _魔法属性,直接查看,和type(类型名称)效果一致!  对象名._ _class_ _ == type(对象)--> 得到当前对象的所属类型  s._ _class_ _ <class '__main__.Person'>

怎么查看当前类型的所有子类:  通过类型的父类名._ _subclasses_ _()这个魔法函数,直接以列表的形式查看当前类型的所有子类 Person._ _subclasses_ _() [<class '__main__.Student'>, <class '__main__.S'>]

(2) 继承的意义 >> 子类中可以编写父类中没有的属性和方法     实现功能的扩展!

>> 子类中可以重写父类中已经在的方法【方法重写】    执行该方法的过程中,如果子类没有重写该方法,执行父类的方法    如果子类重写了该方法,直接执行子类的方法,方法名相同。

>>  > 方法重载:[python没有方法重载]在一个类型中,出现了两个或者两个以上    相同名称的方法[参数不同],根据传递不同的参数执行不同的方法!    由于python弱类型语言的特性,已经在方法中具备了这样的功能    python中没有方法重载    非要给python添加一个方法重载的概念的话:@property--@method.setter

********************************

如果继承了父类之后,子类需要添加自己的属性的话,需要把父类的属性先传递给子类,传递方法 有两种,具体代码如下,在父类的基础上添加了age属性: class Zhishen(God):     def __init__(self, name, age):         #调用父类初始化函数~初始化父类数据         # God.__init__(self, name) # 类型调用             #这两种方法效果一样         super(Zhishen, self).__init__(name) # 对象调用

************************************** 多继承,一个类继承多个父类,【多继承-广度优先 VS 深度优先】,检索是深度优先: python的多继承:体现的是 生活中 一个对象 会有多个角色的概念

如果一个类型继承了多个类,这个类型里面是pass,调用这个类型中的一个方法的时候,会先 寻找继承的第一个父类中有没有这个方法,如果有的话就直接调用第一个父类中的那个方法, 如果继承的第一个父类中没有那个那个方法的话就寻找第二个父类,这样依次寻找,先深度再广度。 lass A():     def __init__(self):         self.value = "类型AAAAAAAAAAA的value值"     def show(self):         print("类型aaaaaaaaaaaa中的show执行了")

class B(A):     pass

class C():     def __init__(self):         self.value = "类型CCCCCCCCC中的value值"     def show(self):         print("类型ccccccccccccc中的show执行了") class X(B, C):     pass

x = X() x.show() >>>>类型aaaaaaaaaaaa中的show执行了

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏全沾开发(huā)

学习zepto.js(原型方法)[1]

学习zepto.js(原型方法)[1] 新的一周,新的开始,今天来学习一下zepto里边的原型方法,就是通过$.进行调用的方法,也是可...

40590
来自专栏企鹅号快讯

Python类与面向对象

面向对象程序 程序 = 指令 + 数据 代码可以选择以指令为核心或以数据为核心进行编程 两种范例 1.以指令为核心:围绕"正在发生什么"编写 面向过程编程:程序...

27880
来自专栏java一日一条

Java 回顾 ( Revisiting Java )

最近在看一些工程代码,于是看了看设计模式,看设计模式之前发现Java是先修知识,又重新补了一遍Java,温故知新,获得一些新的体会。 本文不打算作为“Java知...

9120
来自专栏移动端开发

Swift 面向对象解析(一)

面向对象总体概括: Swift 不仅能够面向过程编程,也能够面向对象编程(OOP)。面向对象其实就是“以对象为核心”,把我们的客观世界想着是由一个个对象组...

22570
来自专栏前端那些事

强大的原型和原型链

前两次总结了JavaScript中的基本数据类型(值类型<引用类型>,引用类型<复杂值>)以及他们在内存中的存储,对内存空间有了一个简单的了解,以及第二次总结了...

20080
来自专栏武军超python专栏

2018年7月26日python中面向对象中的封装

9720
来自专栏PhpZendo

震惊 php empty 函数判断结果为空,但实际值却为非空

最近我在一个项目中使用 empty 时获取到了一些意料之外的结果。下面是我处理后的调试记录,在这里与你分享了。

16010
来自专栏Python中文社区

Python内嵌作用域与函数闭包

前情回顾,上一节我们介绍了变量的LEGB索引机制:对一个变量,首先在本地(函数内)查找;之后查找嵌套函数的本地作用域,然后再是查找当前的全局作用域。

16540
来自专栏mukekeheart的iOS之旅

final、finally、finalize的区别

final:修饰符,可以用于修饰成员、方法和类。 如果一个类被声明为final,意味着该类不能再派生出新的子类,不能作为父类被继承。因此一个类不能即被声明为ab...

25150
来自专栏前端那些事

强大的原型和原型链

前两次总结了JavaScript中的基本数据类型(值类型<引用类型>,引用类型<复杂值>)以及他们在内存中的存储,对内存空间有了一个简单的了解,以及第二次总结了...

221100

扫码关注云+社区

领取腾讯云代金券