博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Python学习之路-24 (面向对象Python2.7类继承)
阅读量:5061 次
发布时间:2019-06-12

本文共 1307 字,大约阅读时间需要 4 分钟。

单继承

class 
<类名>
(父类名)
<代码快>

类的多重继承

class 类名(父类1,父类2,....,父类n)   
<代码块>
  1. Python的类可以继承多个类,Java和C#中则只能继承一个类
  2. Python的类如果继承了多个类,那么其寻找方法的方式有两种,分别是:深度优先和广度优先

class-inheritance-01

  • 当类是经典类时,多继承情况下,会按照深度优先方式查找
  • 当类是新式类时,多继承情况下,会按照广度优先方式查找

经典类和新式类,从字面上可以看出一个老一个新,新的必然包含了跟多的功能,也是之后推荐的写法,从写法上区分的话,如果 当前类或者父类继承了object类,那么该类便是新式类,否则便是经典类。

class-inheritance-02class-inheritance-03

经典类多继承

class D:    def bar(self):        print 'D.bar'class C(D):    def bar(self):        print 'C.bar'class B(D):    def bar(self):        print 'B.bar'class A(B, C):    def bar(self):        print 'A.bar'a = A()# 执行bar方法时# 首先去A类中查找,如果A类中没有,则继续去B类中找,如果B类中么有,则继续去D类中找,如果D类中么有,则继续去C类中找,如果还是未找到,则报错# 所以,查找顺序:A --> B --> D --> C# 在上述查找bar方法的过程中,一旦找到,则寻找过程立即中断,便不会再继续找了a.bar()

新式类多继承

class D(object):    def bar(self):        print 'D.bar'class C(D):    def bar(self):        print 'C.bar'class B(D):    def bar(self):        print 'B.bar'class A(B, C):    def bar(self):        print 'A.bar'a = A()# 执行bar方法时# 首先去A类中查找,如果A类中没有,则继续去B类中找,如果B类中么有,则继续去C类中找,如果C类中么有,则继续去D类中找,如果还是未找到,则报错# 所以,查找顺序:A --> B --> C --> D# 在上述查找bar方法的过程中,一旦找到,则寻找过程立即中断,便不会再继续找了a.bar()
  1. 经典类:首先去A类中查找,如果A类中没有,则继续去B类中找,如果B类中么有,则继续去D类中找,如果D类中么有,则继续去C类中找,如果还是未找到,则报错
  2. 新式类:首先去A类中查找,如果A类中没有,则继续去B类中找,如果B类中么有,则继续去C类中找,如果C类中么有,则继续去D类中找,如果还是未找到,则报错

**注意:88在上述查找过程中,一旦找到,则寻找过程立即中断,便不会再继续找

转载于:https://www.cnblogs.com/sjie0224/articles/7563353.html

你可能感兴趣的文章
js数组操作大全
查看>>
创业者要处理好的10大关系
查看>>
佛教和道教对“妖”的差异
查看>>
[TimLinux] Python IDE工具
查看>>
[TimLinux] Python Django与WSGI的简介
查看>>
从其它系统登录到SharePoint 2010系统的单点登录
查看>>
ElMAH(ASP.NET错误日志记录与通知)系列文章-基础应用篇
查看>>
pexpect学习阶段
查看>>
做最多的,展示最好的
查看>>
会员未登录显示ID=1的会员信息 解决方案
查看>>
Git与Repo入门(转载)
查看>>
夺命雷公狗---linux NO:10 linux的文件与目录的基本操作
查看>>
Count the string
查看>>
poj 1438--One-way Traffic(边的双连通)
查看>>
vue 城市列表与字母表联动
查看>>
一段js代码解决网页内容无法复制的问题
查看>>
JS九大内置对象
查看>>
144 Binary Tree Preorder Travesal
查看>>
Linux信号实践(5) --时间与定时器
查看>>
题---
查看>>