Python自学之乐-python 2、python 3中经典类、新式类的深度和广度优先小结

#Author:clarkclass Original(object):#在python 3 中写上object的新式类和不写的经典类遵循的都是广度优先原则    def __init__(self):        print("in Original")class Second(Original):    pass    # def __init__(self):    #     print("in the second")class Third(Original):    def __init__(self):        print("in the third")class  Last(Second,Third):    pass    # def __init__(self):    #     print("in the last")

last_obj = Last()运行结果为:in the third

如果在python2中经典类结果为in Original新式类的结果为in the third可以在python2环境中试一下

总结:python2 中经典类遵循深度优先原则,新式类遵循广度优先原则python3 中经典类和新式类都遵循广度优先原则
时间: 2024-09-29 17:23:47

Python自学之乐-python 2、python 3中经典类、新式类的深度和广度优先小结的相关文章

Python自学之乐-继承的新式类与经典类

#Author:clarkclass Animal(object):#python3中新式类写法,继承object(所有类的基类) #kind = "" #类属性 def __init__(self,name,age,food):#name等是实例属性 init方法叫做构造方法__del__是析构方法 self.Name = name self.Age = age self.food = food def eat(self): print("%s is eat %s"

Python自学之乐-多继承顺序问题

最近自学Python到面向对象这里,感觉有必要把多继承这里好好理解一下,下面是我自己的一点小总结,如果有朋友觉得有什么不足的,还望不吝赐教! 1.#Author:clark class Animal(object):#动物类 #kind = "" def __init__(self,name,age,food): self.Name = name self.Age = age self.food = food def eat(self): print("%s is eat %

Python自学之乐-装饰器浅谈

以前学过点 面向对象的知识,我感觉这之间是有关联的,比如说装饰器的第一个要素是对被装饰的函数的封闭性,不允许更改:第二个就是对装饰器本oj身的可扩展性. 装饰器要点:高阶函数+嵌套函数=装饰器 需要掌握的知识点:1.函数即变量 2.高阶函数(函数的参数也是函数) 3.嵌套函数 装饰器一:装饰器不带参数,被装饰的函数也不带参数 简单的需求:现有两个简单的打印内容的函数,现在需要在不改变两个函数源代码的情况下统计每个函数运行时间 import timedef timer(func):#用到高阶函数

22.python中的面向对象和类的基本语法

当我发现要写python的面向对象的时候,我是踌躇满面,坐立不安呀.我一直在想:这个坑应该怎么爬?因为python中关于面向对象的内容很多,如果要讲透,最好是用面向对象的思想重新学一遍前面的内容.这个坑是如此之大,犹豫再三,还是只捡一下重要的内容来讲吧,不足的内容只能靠大家自己去补充了. 惯例声明一下,我使用的版本是 python2.7,版本之间可能存在差异. 好,在开讲之前,我们先思考一个问题,看代码: 为什么我只创建是为 a 赋值,就可以使用一些我没写过的方法? 可能会有小伙伴说:因为 a

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

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

【Python】Python 新式类介绍

本文转载自:kaka_ace's blog 我们使用 Python 开发时, 会遇到 class A 和 class A(object) 的写法, 这在 Python2 里是有概念上和功能上的区别, 即经典类(旧式类)与新式类的区别, 英文上分别描述为 old-style(classic-style) 与 new-style. 通过搜索, 先查阅了三个资料链接: 官方文档 stackoverflow 解答 Python Types and Objects 根据 stackoverflow 答案引

Python经典类和新式类的区别

<span style="font-size:18px;">#从Python的内置类中派生的都是python的新式类 #新式类会广度搜索,也就是一层层的向上搜索 class A(object): attr=1 class B(A): pass class C(A): attr=3 class D(B,C): pass #经典类会深度搜索,遇到一个超类节点向上搜索 class ClassicA: attr=1 class ClassicB(ClassicA): pass cl

Python新式类 单例模式与作用域(四)

1 新式类与旧式类 新式类拥有经典类的全部特性之外,还有一些新的特性,比如 __init__发生变化,新增了静态方法__new__,python3目前都采用新式类,新式类是广度优先,旧式类是深度优先 #新式类 class C(object): pass #经典类 class B: pass (1)内置的object对象 1. __new__,__init__方法 这两个方法是用来创建object的子类对象,静态方法__new__()用来创建类的实例,然后再调用 __init__()来初始化实例.

Python之路(十二):描述符,类装饰器,元类

python基础之面向对象(描述符.类装饰器及元类) 描述符 描述符(__get__,__set__,__delete__)   # 这里着重描述了python的底层实现原理 1. 描述符是什么:描述符本质就是一个新式类,在这个新式类中,至少实现了__get__(),__set__(),__delete__()中的一个,这也被称为描述符协议. __get__():调用一个属性时,触发 __set__():为一个属性赋值时,触发 __delete__():采用del删除属性时,触发 1 class