python中类与对象之继承,python类和对象理解,面对对象的三大特性之

面对对象的三大特性之继承

1.什么是继承?

在程序中,继承指的是class与class之间的关系

继承是一种关系,必须存在两个class才能产生这种关系;被继承的class称为父类,继承的class称为子类。

2.为什么要使用继承?

现实中,通过继承,子可以直接使用父的内容。

在程序中,通过继承,子类可以直接使用父类已有的代码

3.如何使用继承#继承的定义class Father1: x = 13 print(‘这是父类的x‘, x) def coding(self): print(‘我是父类的对象的绑定方法coding‘) @classmethod def missing(cls): print(‘这是父类的绑定方法missing‘)class Father2: y = 14 print(‘这是父类Father的y‘, y)class Son(Father1, Father2): pass?print(Son.x)print(Son.y)son1 = Son()Son.coding(son1)Son.missing()son1.missing()??###输出结果 13 14 我是父类的对象的绑定方法coding 这是父类的绑定方法missing #1.命名方式: 在子类中类名加上括号,加上父类的名称即可#2.在python中,一个子类可以有多个父类,多个父类在括号中用逗号隔开,这一点在其他语言中是不支持的。#3.子类中的对象可以访问父类的属性和方法。#4.子类可以调用父类的绑定方法

4.抽象

抽象:就是抽取公共的父类的方法

抽象的作用:抽取多个类中相同的方法和属性形成一个新的类#应用如下:class Person: def __init__(self, name, age): self.name = name self.age = age def eating(self): print(‘%s要吃饭‘ % self.name) def sleeping(self): print(‘%s要睡觉‘ % self.name)?class Child(Person): def crying(self, mom): print(‘%s今年%s岁会哭着找妈妈%s‘ % (self.name, self.age, mom.name))?class Adult(Person): def working(self, papa): print(‘%s会找老公%s‘ % (self.name, papa.name))?xiaoming = Child(‘xiaoming‘ , 2)mom = Adult(‘jessic‘, 28)papa = Adult(‘egon‘, 30)xiaoming.crying(mom)mom.working(papa)xiaoming.eating()xiaoming.sleeping()?###输出结果xiaoming今年2岁会哭着找妈妈jessicjessic会找老公egonxiaoming要吃饭xiaoming要睡觉?#总结:1.通过继承,避免了重复代码的书写2.通过抽象,避免了继承一些不该有的方法和属性3.写继承时应该先抽象再继承4.在抽取过程中,可能会有一些跟业务需求无关的类这是正常的,这些称为公共父类。5.公共父类的作用是储存多个子类相同的属性和方法

5.派生

派生指的是子类继承父类,并且拥有自己独特的属性或技能,该子类称为派生。派生类一定是子类。#为什么有派生类?#因为子类可能有自己独特的属性需要添加class Person: def __init__(self, name, age): self.name = name self.age = age def say_hi(self): print("hello my name is %s,i‘m %s years old" % (self.name, self.age))?class Student(Person): def __init__(self, name, age, adress): self.name = name self.age = age self.adress = adress def attend_class(self): print(‘%s家在%s,%s岁,要好好学习‘ % (self.name, self.adress, self.age))?daidai = Student(‘daidai‘, 26, ‘china‘)daidai.say_hi()daidai.attend_class()hello my name is daidai,i‘m 26 years olddaidai家在china,26岁,要好好学习?#Student就是一个派生类

?

6.子类访问父类的方法和属性

在派生中,相同的初始化属性,相同部分写了重复代码

有两种方式可以让子类访问父类的方法和属性class Student(Person): def __init__(self, name, age, adress): #第一种调用方式:在子类中重用父类方法。这种调用方式与继承关系无关 Person.__init__(self, name, age) self.adress = adress def attend_class(self): print(‘%s家在%s,%s岁,要好好学习‘ % (self.name, self.adress, self.age))?daidai = Student(‘daidai‘, 26, ‘china‘)daidai.say_hi()daidai.attend_class()?###2.class Student(Person): def __init__(self, name, age, adress): #第二种调用方式:利用super() #super()表示创建一个特殊对象,可用于调用父类 super().__init__(name,age) # Person.__init__(self, name, age) self.adress = adress def attend_class(self): print(‘%s家在%s,%s岁,要好好学习‘ % (self.name, self.adress, self.age))?daidai = Student(‘daidai‘, 26, ‘china‘)daidai.say_hi()daidai.attend_class()?##了解在python2中,super()的使用方法有所不同,需要写成:super(Student, self).__init__(name, age)#其中Student表示父类,self表示是对象本身

7.继承后子类的属性查找class S: x = 1?class A(S): x = 2?class B(A): x = 3?b = B()b.x = 4print(b.x)?子类对象和对象的查找方法的查找顺序:对象——>B(子类)——>A(父类)——>S(父类)?#如果一个子类有多个父类时查找顺序#1.如果父类不存在自己的父类时,按照继承的顺序去查找BASC#2.如果父类还有自己的父类时,则按照继承顺序沿一条线找到底(深度查找)#3.如果存在两层关系还有公共关系时,会按照广度优先原则查找,也就是最后一层不会先找,先按照深度原则找完父类,然后再找父类的公共类class C: x = 5class S: x = 1?class A: x = 2?class B(A, S, C): x = 3?b = B()b.x = 4print(b.x)??#注意:1.在经典类中,属性的查找只按照深度查找原则2.只有在python2中才有经典类

8.经典类和新式类

所有直接继承或者间接继承object的类,都是新式类,object称之为根类,意思时所有类都是源自object类

为什么这么设计?

创建对象时,需要申请内存空间,创建新的名称空间,将对象的属性放入名称空间,这一复杂的基础操作都是由object完成的。简单来说就是object提供了一些常用的基础操作

注意:

1.在python3中,所有类都是object的子类,所有类都是新式类

2.在python2中,默认的是经典类,不会继承object#区别#python3中定义类class Cls(): print(‘python3中定义类‘) #python2中class Cls(Object): print(‘python2中定义类‘)

——base——的作用class Cls(): print(‘python3中定义类‘)Cls.__base__?#Cls.__base__用于查看父类??Cls.mor().mor()显示属性列表

python中类与对象之继承

python中对象的特性_python中类与对象之继承,python类和对象理解,面对对象的三大特性之...相关推荐

  1. python中难的算法_Python算法很难吗?python神书《算法图解》PDF电子版分享给你

    许多小伙伴后台私信说,python算法让自己很头疼,有没有可以让算法像小说一样有趣的书籍资料呢?看这里吧!小宋为大家找到了这本<算法图解>的PDF电子版!让你在学习python的路上变得轻 ...

  2. python中doc=parased.getroot()_python实例手册.py

    python实例手册 #encoding:utf8 # 设定编码-支持中文 0 说明 手册制作: 雪松 littlepy www.51reboot.com 更新日期: 2016-01-21 欢迎系统运 ...

  3. python中csv文件操作_python中操作csv文件

    python中操作csv文件 读取csv improt csv f = csv.reader(open("文件路径","r")) for i in f: pri ...

  4. python中的正则表达式语法_Python基础教程之正则表达式基本语法以及re模块

    什么是正则: 正则表达式是可以匹配文本片段的模式. 正则表达式'Python'可以匹配'python' 正则是个很牛逼的东西,python中当然也不会缺少. 所以今天的Python就跟大家一起讨论一下 ...

  5. python中赋值语句的作用_python中return可以使用赋值语句吗?

    在python中,有各种不同类型的语句.一个python程序是由模块构成的;一个模块由一条或多条语句组成;每个语句由不同的表达式组成;表达式可以创建和操作对象.下面来看看python中的语句. 赋值语 ...

  6. python中常见的流程_Python面试中最常见的25个问题-结束

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 13)Python中的lambda表达式是什么? lambda表达式是一个匿名函数,通常用作代码行内的嵌入函数. 14)为什么Python中的lambda ...

  7. python中strip的用法_Python中你不知道的strip()函数的妙用

    [开胃小菜] 当提到python中strip方法,想必凡接触过python的同行都知道它主要用来切除空格.有以下两种方法来实现. 方法一:用内置函数if name == 'main' : str = ...

  8. python中sort函数源代码_Python中sort和sorted函数代码解析

    Python中sort和sorted函数代码解析 本文研究的主要是Python中sort和sorted函数的相关内容,具体如下. 一.sort函数 sort函数是序列的内部函数 函数原型: L.sor ...

  9. python中关键字参数含义_python中接受任意关键字的参数

    1.*args args是非关键字参数,可以理解为形参,为了方便记忆我理解它是arguments的缩写. 2.*kwargs kwargs是键值对参数,为了方便记忆我理解它是key word argu ...

最新文章

  1. 一个操作系统组成部分
  2. 循环节长度 java,第六届蓝桥杯java试题-循环节长度
  3. for语句的执行过程_带你深入了解Java流程控制语句
  4. 高特权级代码段转向低特权级代码段(利用 ret(retf) 指令实现 jmp from ring0 to ring3)
  5. 类的带参方法有哪几部分构成?
  6. leadshop开源商城系统
  7. 提升安全性WindowsXP必禁的十大服务
  8. 对比 Ruby 和 Python 的垃圾回收
  9. mysql 机器复制_MySQL复制在同一台机器上
  10. 网络爬虫--抓取图片
  11. Java探索之旅(18)——多线程(2)
  12. [C++] 关于delete和delete[]
  13. 从铸剑到御剑:滴滴工程效能平台建设之路
  14. python+word+excel+ppt自动化办公教程_Python自动化办公之Word,全网最全看这一篇就够了...
  15. 浙江工业大学2020考研经验分享
  16. c语言程序规定必须用main作为,C语言学习必须清楚的事情,这就是C语言的开始...
  17. 3dsmax模型导出网页3D版gltf格式文件 #2021.6.25
  18. 网站如何添加访客统计代码
  19. c语言遍历算法的头文件,图优先遍历算法(C语言版).doc
  20. 论文细读:HOLMES:Real-time APT Detection through Correlation of Suspicious Information Flows

热门文章

  1. dnf剑魂buff等级上限_DNF:这两个职业buff精通一级,上限11级,跟其他职业不一样...
  2. 把CDLinux制作成U盘启动
  3. 2015校招求职之路
  4. SQL Server2008 数据库误删除数据的恢复方法分享[转]
  5. Day8 - 集合和字符串
  6. 推荐:职场人必看的电影/电视剧【假期福利】
  7. 基于灰色关联度的人均GDP影响因数分析
  8. Shell 仿消灭星星游戏(2013-03-15)
  9. m4b格式 android,音频和视频格式
  10. ip8plus多重_对iPhone 8无感?那是因为你不知道它有多强大