栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

Python中的旧样式类和新样式类有什么区别?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Python中的旧样式类和新样式类有什么区别?

在Python 2.1之前,旧式类是用户可用的唯一样式。

(旧式)类的概念与类型的概念无关:如果

x
是旧式类的实例,则
x.__class__
指定的类
x
,但
type(x)
始终为
<type  'instance'>

这反映了这样一个事实,即所有旧式实例(独立于其类)均使用称为实例的单个内置类型实现。

在Python 2.2中引入了新的类,以统一

class
type
的概念。新型类只是用户定义的类型,不多也不少。

如果x是新样式类的实例,则

type(x)
通常与
x
相同
x.__class__
(尽管不能保证–允许新样式类实例覆盖为返回的值
x.__class__
)。

引入新型类的主要动机是提供具有完整元模型的统一对象模型。

它还具有许多直接的好处,例如能够对大多数内置类型进行子类化,或者引入了“描述符”,以启用计算属性。

出于兼容性原因,默认情况下,类仍为旧样式。

通过将另一个新样式类(即一种类型)指定为父类或“顶级类型”对象(如果不需要其他父类)来创建新样式类。

新样式类的行为与旧样式类的行为不同,除了返回什么类型外,还有许多重要的细节。

其中一些更改是新对象模型的基础,例如调用特殊方法的方式。其他是出于兼容性考虑而无法实现的“修复程序”,例如在多重继承的情况下的方法解析顺序。

Python 3仅具有新型类。

无论是否从中继承子类

object
,类都是
Python 3
中的新型样式。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/373504.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号