python新式类和经典类的区别实例分析
作者:bronk 时间:2023-07-28 10:01:02
本文实例讲述了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程序设计有所帮助。
来源:https://www.cnblogs.com/wenbronk/p/7141224.html
![](/images/zang.png)
![](/images/jiucuo.png)
猜你喜欢
Mysql数据库的安全性问题释疑
python Task在协程调用实例讲解
JS仿iGoogle自定义首页模块拖拽特效的方法
图片自适应宽度新解决方法
如何使用Python的Requests包实现模拟登陆
![](https://img.aspxhome.com/file/2023/3/75123_0s.png)
python实现网站的模拟登录
asp如何定时执行约定的页面?
golang操作mongodb的方法
微信小程序实现简单的select下拉框
![](https://img.aspxhome.com/file/2023/1/136301_0s.gif)
如何动态产生变量?
通过代码实例了解Python3编程技巧
解决idea打开窗口/tab过多导致隐藏的问题
![](https://img.aspxhome.com/file/2023/7/132407_0s.png)
JavaScript实现五子棋游戏的方法详解
![](https://img.aspxhome.com/file/2023/3/130493_0s.gif)
[新手必看]15个asp编程常见问题解答
![](https://img.aspxhome.com/file/UploadPic/up/2007082213545326.jpg)
用JS实现飞机大战小游戏
在Pycharm中使用GitHub的方法步骤
![](https://img.aspxhome.com/file/2023/4/83654_0s.png)
np.ones的使用小结
![](https://img.aspxhome.com/file/2023/7/101327_0s.png)
Windows下的Python 3.6.1的下载与安装图文详解(适合32位和64位)
![](https://img.aspxhome.com/file/2023/6/125046_0s.png)
设计72变——寻求banner制作的变化
![](https://img.aspxhome.com/file/UploadPic/200911/12/t11bvnxfhjxxxxxxxx-600-95-92s.jpg)
Python利用reportlab实现制作pdf报告
![](https://img.aspxhome.com/file/2023/9/126949_0s.jpg)