Python新式类和旧式类的区别

新式类是为了统一**而在2.2中开始引入的。

代码讲解

上面的例子比较明白的说明了问题。

B是定义的新式类。那么输入b的时候,不论是type(b),还是b.__class__都是输出的<class ‘__main__.B‘>。

A是定义的旧式类。

-----------------------------------

另外,新式类和旧式类还有一个区别就是在多继承的时候,查找要调用的方法。

新式类是广度优先的查找算法。

旧式类的查找方法是深度优先的。

时间: 2024-11-06 10:49:33

Python新式类和旧式类的区别的相关文章

python新式类与旧式类

python2.X是经典类[旧式类]: 是以深度优先[] 但是在Python2.x中,默认都是经典类,只有显式继承了object才是新式类,即:class Person(object):pass 新式类写法class Person():pass 经典类写法class Person:pass 经典类写法 他们最明显的区别在于继承搜索的顺序发生了改变,即经典类多继承搜索顺序(深度优先):先深入继承树左侧查找,然后再返回,开始查找右侧,如图所示: 1           A 2-1 B       

python 新式类和旧式类

新式类和旧式类 python的新式类是2.2版本引进来的,我们可以将之前的类叫做经典类或者旧类. 为什么要在2.2中引进new style class呢?官方给的解释是: 为了统一类(class)和类型(type). 在2.2之前,比如2.1版本中,类和类型是不同的,如a是ClassA的一个实例,那么a.__class__返回 ' class    __main__.ClassA' ,type(a)返回总是<type 'instance'>.而引入新类后,比如ClassB是个新类,b是Clas

python开发学习-day07(面向对象之多态、类的方法、反射、新式类and旧式类、socket编程)

s12-20160227-day07 *:first-child { margin-top: 0 !important; } body>*:last-child { margin-bottom: 0 !important; } /* BLOCKS =============================================================================*/ p, blockquote, ul, ol, dl, table, pre { margin

【面向对象】新式类和旧式类的区别

旧式类: class jiushi(): def __init__(self,a1): self.a=a1 class jiushi_son(jiushi): def __init__(self,a1): jiushi.__init__(self,a1) 新式类:(多继承时) class xinshi(object): def __init__(self, a1): self.a = a1 class xinshi_son(xinshi): def __init__(self, a1): sup

python 之简单浅谈新式类和旧式类(或称经典类)

#_*_coding:utf-8 _*_ #知识点:经典类和新式类的区别 #父类 class Father(object):     def __init__(self):         self.Fname = 'fffffff'         print 'father.__init__'     def Func(self):         print 'funcfurnc'     def Bar(self):         print 'barbarbar'     def T

关于 python 新式类和旧式类继承顺序的验证

参考:http://www.cnblogs.com/blackmatrix/p/5630515.html 官方:https://docs.python.org/2/tutorial/classes.html 关于多继承问题 Python supports a limited form of multiple inheritance as well. A class definition with multiple base classes looks like this: For old-sty

【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新式类 单例模式与作用域(四)

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

Python新式类和经典类的区别

@Python新式类和经典类的区别 class ClassicClass(): pass class NewStyleClass(object): pass x1 = ClassicClass() x2 = NewStyleClass() print x1.__class__, type(x1) print x2.__class__, type(x2) 输出结果: __main__.ClassicClass <type 'instance'> <class '__main__.NewSt