Python类(三)-多继承的区别

多继承的有两个方式,一个是广度优先,一个是深度优先
Python2中经典类按深度优先,新式类按广度优先
Python3中经典类和新式类都按广度优先

# -*- coding:utf-8 -*-
__author__ = "MuT6 Sch01aR"

class A():
    def __init__(self):
        print(‘A‘)

class B(A):
    def __init__(self):
        print(‘B‘)

class C(A):
    def __init__(self):
        print(‘C‘)

class D(B,C):
    pass

D()

D继承了B,C

B,C分别继承了A

第一级为A,第二级为B和C(左边的优先),第三级为D

首先在Python3环境下运行,看看结果

首先继承了B,把B中内容改为pass,运行

D继承了C,再把C中内容改为pass,运行

D最后继承了A

可见广度优先的顺序为:B->C->A,即先同一级,再上一级

再在Python2环境中运行,看看是什么情况

首先是B,把B中内容改为pass,运行

D继承了A,把A中内容改为pass,运行

D最后继承了C

深度优先的继承顺序为:B->A->C,即先上一级,再同一级

原文地址:https://www.cnblogs.com/sch01ar/p/8360977.html

时间: 2024-08-11 13:20:25

Python类(三)-多继承的区别的相关文章

python类的静态方法和类方法区别

# python类的静态方法和类方法区别 ## 先看语法,python 类语法中有三种方法,实例方法,静态方法,类方法. 本文由黄哥python培训黄哥所写. # coding:utf-8 class Foo(object): """类三种方法语法形式""" def instance_method(self): print("是类{}的实例方法,只能被实例对象调用".format(Foo)) @staticmethod def

Python 类的多继承

#类的多继承 ''' 与c++不同,python的类经过优化,多继承时不会产生方法二义性 ''' #python中所有的类都是默认继承于object类 class A(object): def test(self): print("---a---") class B(A): def test(self): print("----b----") class C(A): def test(self): print("----c-----") clas

python 类 三:子类

本文的部分例子来自于 <<python核心编程 第二版>> 子类如果不定义构造方法的话,那么自动继承父类的构造方法. 并且在创建子类的实例化对象的时候,父类的构造器将被自动调用. 如果想实现子类自己的构造方法,则要在子类里面去重载父类的构造器. 我们举例子分别说明之. (1) 子类不创建自己的构造方法,自动继承父类的构造方法,并且在创建子类的实例化对象的时候,会自动的去调用父类的构造方法. #coding:utf-8 class add_book_entry(object):   

Python类三种方法,函数传参,类与实例变量(一)

1 Python的函数传递: 首先所有的变量都可以理解为内存中一个对象的'引用' a = 1 def func(a): a = 2 func(a) print(a) # 1 a = 1 def fun(a): print("函数里",id(a)) # 函数里 41322472 a = 2 print("赋值后",id(a), id(2)) # 赋值后 41322448 41322448 print("函数外",id(a), id(1)) # 函数

day10 Python作用域 Python2.7与Python3.x的类继承的区别及其他

一.Python作用域   1.Python中无块级作用域 if 1 == 1: name = 'test' print(name) #输出会报错,因为name的作用域仅限于if下的代码块,而不属于全局   2.Python中以函数为作用域 def func(): func_name = 'func_test' print(func_name) #这里同样会报错,因为变量func_name的作用于func函数中   3.Python作用域链,层层嵌套,使用时从内向外找   4.Python的作用

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

一.面向对象 编程方式 面向过程:根据业务逻辑从上到下写垒代码 函数式:将某功能代码封装到函数中,日后便无需重复编写,仅调用函数即可 面向对象:对函数进行分类和封装,让开发"更快更好更强-" 什么是面向对象 面向对象就不像面向过程那样按照功能划分模块了,它所关注的是软件系统有哪些参与者,把这些参与者称为对象,找出这些软件系统的参与者也就是对象之后,分析这些对象有哪些特征.哪些行为,以及对象之间的关系,所以说面向对象的开发核心是对象 什么是类 面向对象编程的两个重要的概念:类和对象 类是

python类的三种方法

一.先看语法,python 类语法中有三种方法,实例方法,静态方法,类方法. ps.python中self,cls的区别 普通实例方法,第一个参数需要是self,它表示一个具体的实例本身.如果用了staticmethod,那么就可以无视这个self,而将这个方法当成一个普通的函数使用.而对于classmethod,它的第一个参数不是self,是cls,它表示这个类本身. # coding:utf-8 class Foo(object): """类三种方法语法形式"&

【python】-- 类的多继承、经典类、新式类

继承知识点补充 在python还支持多继承,但是一般我们很少用,有些语言干脆就不支持多继承,有多继承,就会带来两个概念,经典类和新式类. 一.多继承 之前我们都是讲的单继承,那么什么是多继承呢?说白了,就是:子类可以继承多个父类,就叫多继承. class SchoolMember(object): #SchoolMember类 '''学校成员基类''' def tell(self): print("the schoolmeber is tell...") class School(ob

python类的继承

Python 类的一些基本概念 Python中一切皆对象,声明变量函数等的过程实际上就是它们到内存中为对象分配的空间的连接.Python中的类同Java.C++一样,有自己的属性与方法.属于一个对象或类的变量被称为域. 域有两种类型--属于每个实例/类的对象或属于类本身,它们分别被称为实例变量和类变量. 类的变量 由一个类的所有对象(实例)共享使用.所有对象共用一个类变量的拷贝.对象的变量 由类的每个对象/实例拥有.因此每个对象有自己对这个域的一份拷贝. 类的方法与普通的函数只有一个特别的区别-