Python 类的继承和多态

  Python 类的继承

    在OOP(Object Oriented Programming)程序设计中,当我们定义一个class的时候,可以从某个现有的class 继承,新的class称为子类(Subclass),而被继承的class称为基类、父类或超类(Base class、Super class)。

    我们先来定义一个class Person,表示人,定义属性变量 name 及 sex (姓名和性别);

    定义一个方法print_title():当sex是male时,print man;当sex 是female时,print woman。参考如下代码:

 class Person(object):
def __init__(self,name,sex):
self.name = name
self.sex = sex def print_title(self):
if self.sex == "male":
print("man")
elif self.sex == "female":
print("woman") class Child(Person): # Child 继承 Person
pass May = Child("May","female")
Peter = Person("Peter","male") print(May.name,May.sex,Peter.name,Peter.sex) # 子类继承父类方法及属性
May.print_title()
Peter.print_title()

    而我们编写 Child 类,完全可以继承 Person 类(Child 就是 Person);使用 class subclass_name(baseclass_name) 来表示继承;

    继承有什么好处?最大的好处是子类获得了父类的全部属性及功能。如下 Child 类就可以直接使用父类的 print_title() 方法

    实例化Child的时候,子类继承了父类的构造函数,就需要提供父类Person要求的两个属性变量 name 及 sex:

    在继承关系中,如果一个实例的数据类型是某个子类,那它也可以被看做是父类(May 既是 Child 又是 Person)。但是,反过来就不行(Peter 仅是 Person,而不是Child)。

    继承还可以一级一级地继承下来,就好比从爷爷到爸爸、再到儿子这样的关系。而任何类,最终都可以追溯到根类object,这些继承关系看上去就像一颗倒着的树。比如如下的继承树:

    aaarticlea/png;base64,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" alt="" width="508" height="297" />

  isinstance()   及  issubclass()

    Python 与其他语言不同点在于,当我们定义一个 class 的时候,我们实际上就定义了一种数据类型。我们定义的数据类型和Python自带的数据类型,比如str、list、dict没什么两样。

    Python 有两个判断继承的函数:isinstance() 用于检查实例类型;issubclass() 用于检查类继承。参见下方示例:

class Person(object):
pass class Child(Person): # Child 继承 Person
pass May = Child()
Peter = Person() print(isinstance(May,Child)) # True
print(isinstance(May,Person)) # True
print(isinstance(Peter,Child)) # False
print(isinstance(Peter,Person)) # True
print(issubclass(Child,Person)) # True

  Python 类的多态

    在说明多态是什么之前,我们在 Child 类中重写 print_title() 方法:若为male,print boy;若为female,print girl

 class Person(object):
def __init__(self,name,sex):
self.name = name
self.sex = sex def print_title(self):
if self.sex == "male":
print("man")
elif self.sex == "female":
print("woman") class Child(Person): # Child 继承 Person
def print_title(self):
if self.sex == "male":
print("boy")
elif self.sex == "female":
print("girl") May = Child("May","female")
Peter = Person("Peter","male") print(May.name,May.sex,Peter.name,Peter.sex)
May.print_title()
Peter.print_title()

    当子类和父类都存在相同的 print_title()方法时,子类的 print_title() 覆盖了父类的 print_title(),在代码运行时,会调用子类的 print_title()

    这样,我们就获得了继承的另一个好处:多态

    多态的好处就是,当我们需要传入更多的子类,例如新增 Teenagers、Grownups 等时,我们只需要继承 Person 类型就可以了,而print_title()方法既可以直不重写(即使用Person的),也可以重写一个特有的。这就是多态的意思。调用方只管调用,不管细节,而当我们新增一种Person的子类时,只要确保新方法编写正确,而不用管原来的代码。这就是著名的“开闭”原则:

  • 对扩展开放(Open for extension):允许子类重写方法函数
  • 对修改封闭(Closed for modification):不重写,直接继承父类方法函数

 

  子类重写构造函数

    子类可以没有构造函数,表示同父类构造一致;子类也可重写构造函数;现在,我们需要在子类 Child 中新增两个属性变量:mother 和 father,我们可以构造如下(建议子类调用父类的构造方法,参见后续代码):

 class Person(object):
def __init__(self,name,sex):
self.name = name
self.sex = sex class Child(Person): # Child 继承 Person
def __init__(self,name,sex,mother,father):
self.name = name
self.sex = sex
self.mother = mother
self.father = father May = Child("May","female","April","June")
print(May.name,May.sex,May.mother,May.father)

Person

    若父类构造函数包含很多属性,子类仅需新增1、2个,会有不少冗余的代码,这边,子类可对父类的构造方法进行调用,参考如下:

 class Person(object):
def __init__(self,name,sex):
self.name = name
self.sex = sex class Child(Person): # Child 继承 Person
def __init__(self,name,sex,mother,father):
Person.__init__(self,name,sex) # 子类对父类的构造方法的调用
self.mother = mother
self.father = father May = Child("May","female","April","June")
print(May.name,May.sex,May.mother,May.father)

  多重继承

    多重继承的概念应该比较好理解,比如现在需要新建一个类 baby 继承 Child , 可继承父类及父类上层类的属性及方法,优先使用层类近的方法,代码参考如下:

 class Person(object):
def __init__(self,name,sex):
self.name = name
self.sex = sex def print_title(self):
if self.sex == "male":
print("man")
elif self.sex == "female":
print("woman") class Child(Person):
pass class Baby(Child):
pass May = Baby("May","female") # 继承上上层父类的属性
print(May.name,May.sex)
May.print_title() # 可使用上上层父类的方法 class Child(Person):
def print_title(self):
if self.sex == "male":
print("boy")
elif self.sex == "female":
print("girl") class Baby(Child):
pass May = Baby("May","female")
May.print_title() # 优先使用上层类的方法

Python学习(七)面向对象 ——继承和多态的更多相关文章

  1. Python之路-面向对象&继承和多态&类属性和实例属性&类方法和静态方法

    一.面向对象 编程方式 面向过程:根据业务逻辑从上到下写垒代码 函数式:将某功能代码封装到函数中,日后便无需重复编写,仅调用函数即可 面向对象:对函数进行分类和封装,让开发“更快更好更强…” 什么是面 ...

  2. python学习day19 面向对象(一)封装/多态/继承

    面向对象 封装思想:将同一类的函数函数封装到同一个py文件中,方便调用 面向对象也有封装的作用,将同一类的函数封装到一个类中 多态(鸭子模型):多种类型/多种形态 #,什么事鸭子模型 对于一个函数,p ...

  3. python学习日记(继承和多态)

    继承 在OOP程序设计中,当我们定义一个class的时候,可以从某个现有的class继承,新的class称为子类(Subclass),而被继承的class称为基类.父类或超类(Base class.S ...

  4. 0022 Java学习笔记-面向对象-继承、多态、组合

    继承的特点 单继承:每个子类最多只有一个直接父类,注意是直接父类,间接父类个数不限 注意父类的概念:A-->B-->C-->D,在这里,ABC都是D的父类,C是D的直接父类,AB是D ...

  5. Python学习之==>面向对象编程(二)

    一.类的特殊成员 我们在Python学习之==>面向对象编程(一)中已经介绍过了构造方法和析构方法,构造方法是在实例化时自动执行的方法,而析构方法是在实例被销毁的时候被执行,Python类成员中 ...

  6. python学习-64 面向对象三大特性----继承1

    面向对象三大特性 1.三大特性? 继承,多态,封装 2.什么是继承? 类的继承和现实生活中的父与子,继承关系是一样的,父类为基类. python中的类继承分为:单继承和多继承 3.举例说明 class ...

  7. Python面向对象 -- 继承和多态、获取对象信息、实例属性和类属性

    继承和多态 继承的好处: 1,子类可以使用父类的全部功能 2,多态:当子类和父类都存在相同的方法时,子类的方法会覆盖父类的方法,即调用时会调用子类的方法.这就是继承的另一个好处:多态. 多态: 调用方 ...

  8. 【学习笔记】--- 老男孩学Python,day18 面向对象------继承

    继承 继承是一种创建新类的方式,在python中,新建的类可以继承一个或多个父类, 父类又可称为基类或超类,新建的类称为派生类或子类 python中类的继承分为:单继承和多继承 class Fathe ...

  9. Python学习 Day 8 继承 多态 Type isinstance dir __slots__

    继承和多态 在OOP程序设计中,当我们定义一个class的时候,可以从某个现有的class继承,新的class称为子类(Subclass),而被继承的class称为基类.父类或超类(Base clas ...

随机推荐

  1. ASP.NET Core (二):入门

    上一篇:ASP.NET Core(一):简介 下一篇:(待续) 英文原版:Getting Started 1. 安装 .NET Core 2. 创建 .NET Core 项目 在命令提示符窗口输入命令 ...

  2. MVC的部分视图(Partial View)

    MVC的部分视图确实与asp.net的用户控件有几分相似,实际应用起来的方式,它又是那样不尽相同. 上次练习了<MVC母版页_Layout.cshtml>http://www.cnblog ...

  3. 数据结构与算法--最小生成树之Kruskal算法

    数据结构与算法--最小生成树之Kruskal算法 上一节介绍了Prim算法,接着来看Kruskal算法. 我们知道Prim算法是从某个顶点开始,从现有树周围的所有邻边中选出权值最小的那条加入到MST中 ...

  4. 【JavaFx教程】第四部分:CSS 样式

    第4部分主题 CSS样式表 添加应用程序图标 CSS样式表 在JavaFX中,你能使用层叠样式表修饰你的用户接口.这非常好!自定义Java应用界面从来不是件简单的事情. 在本教程中,我们将创建一个*D ...

  5. Java - Stack源码解析

    Java提高篇(三一)-----Stack 在Java中Stack类表示后进先出(LIFO)的对象堆栈.栈是一种非常常见的数据结构,它采用典型的先进后出的操作方式完成的.每一个栈都包含一个栈顶,每次出 ...

  6. Hbuilder配置识别逍遥安卓模拟器

    最近在公司,需要开发一款智能家居APP,用到MUI框架,首先就是环境搭建,写好的APP页面,怎么跑在模拟器上运行? 我的开发环境: HBuilder版本:9.0.2.201803061935 逍遥安卓 ...

  7. PHP批量导出数据为excel表格

    之前用插件phoexcel写过批量导入数据,现在用到了批量导出,就记录一下,这次批量导出没用插件,是写出一个表格,直接输出 //$teacherList 是从数据库查出来的二维数组 $execlnam ...

  8. Atcoder:AGC004F Namori

    传送门 先考虑树,树是一个二分图. 看到是二分图并且每次是对两边的同色的点反色可以想到转化:让奇数层的点为黑,偶数为白,变成每次可以交换两个点的颜色. 把黑看成 \(-1\),白看成 \(1\),那么 ...

  9. Bootstrap4响应式布局之栅格系统

    前面说了Bootstrap4的下载和简单使用,现在我们接着往下学习,Bootstrap4的响应式布局主要依靠栅格系统来实现的.面老K先来讲解一下Bootstrap4的栅格系统,让你能够更快的了解Boo ...

  10. 【代码笔记】iOS-MBProgressHUD-Demo

    一,工程图. 二,代码. ViewController.m #import "ViewController.h" #import "MBProgressHUD.h&quo ...