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. Scrum 冲刺博客

    博客链接集合 Alpha阶段敏捷冲刺 敏捷冲刺一 敏捷冲刺二 敏捷冲刺三 敏捷冲刺四 敏捷冲刺五 敏捷冲刺六 敏捷冲刺七 Alpha阶段敏捷冲刺总结 Alpha阶段敏捷冲刺总结

  2. set集合容器(常用的使用方法总结)

     关于C++STL中set集合容器的学习,看别人的代码一百遍,不如自己动手写一遍. 构造set集合容器的目的是为了去重+排序+快速搜索.由于set集合容器实现了红黑树多的平衡二叉检索树的数据结构,在插 ...

  3. 我的菜单在母版页,如何更改菜单点击后的效果 Ver2

    很久之前,Insus.NET使用ASP.NET实现一个功能,非javascript.<我的菜单在母版页,如何更改菜单点击后的效果>http://www.cnblogs.com/insus/ ...

  4. 念念不忘,ASP.NET MVC显示WebForm网页或UserControl控件

    学习与使用ASP.NET MVC这样久,还是对asp.net念念不忘.能否在asp.net mvc去显示aspx或是user control呢?这个灵感(算不上灵感,只能算是想法)是来自前些天有写过一 ...

  5. win2d 图片水印

    本文告诉大家如何使用 win2d 给图片加上水印. 安装 首先需要使用 Nuget 安装 win2d ,安装参见win10 uwp win2d 如果没有更新 dot net core 那么在运行可能会 ...

  6. Java基础——Servlet(一)

    在学习Servlet之前,需要首先学习一些关联性的知识. 一.动态网页程序 动态网页:它是网页中的偏功能性的部分也是最重要的部分.它不是我们平时所看见的页面特效,展示的效果.而是,一种交互行为.比如, ...

  7. 多线程系列(3)任务Task

    虽然使用线程池ThreadPool让我们使用多线程变得容易,但是因为是由系统来分配的,如果想对线程做精细的控制就不太容易了,比如某个线程结束后执行一个回调方法.恰好Task可以实现这样的需求.这篇文章 ...

  8. WebServer搭建过程

    第一步,新建Web网站项目 第二步: 右击项目解决方案,选择添加新建项 选择Web服务项 第三步,在asmx方法中将Hello World注释掉,然后编写自己的方法,这里根据项目的不同可以做不同的处理 ...

  9. xshell提示采购解决方法

    参考http://blog.csdn.net/longgeaisisi/article/details/78637179

  10. jQuery复选框全选和全选取消

    jQuery(".salaryIds").each(function(){ if(jQuery("#salaryIds").attr("checked ...