python新式类和经典类的区别实例分析
本文实例讲述了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程序设计有所帮助。
相关文章
linux系统使用python监测网络接口获取网络的输入输出
这篇文章主要介绍了linux系统使用python监测网络接口获取网络的输入输出信息,大家参考使用吧2014-01-01
keras 自定义loss损失函数,sample在loss上的加权和metric详解
这篇文章主要介绍了keras 自定义loss损失函数,sample在loss上的加权和metric详解,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧2020-05-05
Python利用pdfplumber实现读取PDF写入Excel
pdfplumber专注PDF内容提取,例如文本(位置、字体及颜色等)和形状(矩形、直线、曲线),还有解析表格的功能。本文主要为大家介绍如何利用pdfplumber实现读取PDF写入Excel,需要的可以参考一下2022-06-06


最新评论