本文实例讲述了python新式类和经典类的区别。分享给大家供大家参考,具体如下:
新式类就是 class person(object): 这种形式的, 从py2.2 开始出现的
新式类添加了:
__name__ is the attribute's name.
__doc__ is the attribute's docstring.
__get__(object) is a method that retrieves the attribute value from object.
__set__(object, value) sets the attribute on object to value.
__delete__(object, value) deletes the value attribute of object.
新式类的出现, 除了添加了大量方法以外, 还改变了经典类中一个多继承的bug, 因为其采用了广度优先的算法
Python 2.x中默认都是经典类,只有显式继承了object才是新式类
python 3.x中默认都是新式类,经典类被移除,不必显式的继承object
粘贴一段官网上的作者解释
是说经典类中如果都有save方法, C中重写了save() 方法, 那么寻找顺序是 D->B->A, 永远找不到C.save()
代码演示:
#!/usr/bin/env python3 #coding:utf-8 ''' 新式类和经典类的区别, 多继承代码演示 ''' class A: def __init__(self): print 'this is A' def save(self): print 'save method from A' class B: def __init__(self): print 'this is B' class C: def __init__(self): print 'this is c' def save(self): print 'save method from C' class D(B, C): def __init__(self): print 'this is D' d = D() d.save()
结果显示
this is D
save method from C
注意: 在python3 以后的版本中, 默认使用了新式类, 是不会成功的
另外: 经典类中所有的特性都是可读可写的, 新式类中的特性只读的, 想要修改需要添加 @Texing.setter
更多关于Python相关内容感兴趣的读者可查看本站专题:《Python面向对象程序设计入门与进阶教程》、《Python数据结构与算法教程》、《Python函数使用技巧总结》、《Python字符串操作技巧汇总》、《Python编码操作技巧总结》及《Python入门与进阶经典教程》
希望本文所述对大家Python程序设计有所帮助。
本文向大家介绍浅谈python新式类和旧式类区别,包括了浅谈python新式类和旧式类区别的使用技巧和注意事项,需要的朋友参考一下 python的新式类是2.2版本引进来的,我们可以将之前的类叫做经典类或者旧式类。 为什么要在2.2中引进new style class呢?官方给的解释是: 为了统一类(class)和类型(type)。 在2.2之前,比如2.1版本中,类和类型是不同的,如a是Clas
问题内容: Python中的旧样式类和新样式类有什么区别?什么时候应该使用其中一个? 问题答案: 在Python 2.1之前,旧式类是用户可用的唯一样式。 (旧式)类的概念与类型的概念无关:如果是旧式类的实例,则指定的类,但始终为。 这反映了这样一个事实,即所有旧式实例(独立于其类)均使用称为实例的单个内置类型实现。 在Python 2.2中引入了新的类,以统一和的概念。新型类只是用户定义的类型,
本文向大家介绍Ruby类实例变量、类实例方法和类变量、类方法的区别,包括了Ruby类实例变量、类实例方法和类变量、类方法的区别的使用技巧和注意事项,需要的朋友参考一下 在Ruby中类实例变量、类实例方法和类变量、类方法的区别比较微妙,而且用法也有相当的区别。本文探讨一下他们的定义和基本的使用场景,以抛砖引玉... 一.类实例变量和类变量 类变量大家都很熟悉了,就是在类定义中用@@开头的变量
问题内容: 我在阅读PEP 0008(样式指南)时,发现它建议在实例方法中使用self作为第一个参数,而在类方法中使用cls作为第一个参数。 我已经使用并编写了一些类,但从未遇到过类方法(嗯,一种将cls作为参数传递的方法)。有人可以告诉我一些例子吗? 谢谢! 问题答案: 实例方法 创建实例方法时,第一个参数始终为。您可以随意命名,但含义始终相同,并且由于其是命名约定,因此应使用。 (通常)在调用
本文向大家介绍C#中类与结构的区别实例分析,包括了C#中类与结构的区别实例分析的使用技巧和注意事项,需要的朋友参考一下 类与结构是C#程序设计中基本的数据类型,而初学者往往不能很好的分清二者之间的区别。本文就以附带实例形式加以说明。具体如下: 一、基本概念: 类:引用类型,存储在堆中,栈中存储引用地址,在方法的传输中只是传输地址的引用,修改指向的对象会影响原有对象的值,传输中消耗内存小。 结构:值
问题内容: 之间是否存在有意义的区别: 与 如果要创建很多实例,这两种样式在性能或空间要求上是否有任何区别?阅读代码时,您是否认为两种样式的含义有明显不同? 问题答案: 除了性能方面的考虑外,还有明显的语义差异。在类属性的情况下,仅引用一个对象。在实例属性设置实例中,可以有多个引用对象。例如