前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >2018年7月27日python面向对象中的继承

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

作者头像
武军超
发布2018-09-27 11:20:01
4700
发布2018-09-27 11:20:01
举报

只要跟对象有关系的前面就要加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执行了

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2018年07月29日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档