当前位置: 首页 > 面试题库 >

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

子车海
2023-03-14
问题内容

Python中的旧样式类和新样式类有什么区别?什么时候应该使用其中一个?


问题答案:

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

(旧式)类的概念与类型的概念无关:如果x是旧式类的实例,则x.__class__指定的类x,但type(x)始终为<type 'instance'>

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

在Python 2.2中引入了新的类,以统一classtype的概念。新型类只是用户定义的类型,不多也不少。

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

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

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

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

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

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

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

Python 3仅具有新型类。

无论是否从中继承子类object,类都是Python 3中的新型样式。



 类似资料:
  • 本文向大家介绍浅谈python新式类和旧式类区别,包括了浅谈python新式类和旧式类区别的使用技巧和注意事项,需要的朋友参考一下 python的新式类是2.2版本引进来的,我们可以将之前的类叫做经典类或者旧式类。 为什么要在2.2中引进new style class呢?官方给的解释是: 为了统一类(class)和类型(type)。 在2.2之前,比如2.1版本中,类和类型是不同的,如a是Clas

  • 在我们讨论 JavaScript 处理样式和类的方法之前 — 有一个重要的规则。希望它足够明显,但是我们仍然必须提到它。 通常有两种设置元素样式的方式: 在 CSS 中创建一个类,并添加它:<div class="..."> 将属性直接写入 style:<div style="...">。 JavaScript 既可以修改类,也可以修改 style 属性。 相较于将样式写入 style 属性,我们

  • 问题内容: 在我的脑海中,我一直都知道在任何项目中都使用内联样式的类。但是两者之间有什么有效的区别吗? 问题答案: 有一个简单的原因。CSS的重点是将内容(HTML)与表示(CSS)分开。一切都与可访问性和代码重用有关。

  • 这个面试官问了,我说了老半天,不知道他问的真正意图是什么. stackoverflow 这篇文章很好的介绍了新式类的特性: http://www.cnblogs.com/btchenguang/archive/2012/09/17/2689146.html 新式类很早在2.2就出现了,所以旧式类完全是兼容的问题,Python3里的类全部都是新式类.这里有一个MRO问题可以了解下(新式类继承是根据C

  • 问题内容: 在CSS中, default ,user 和 author 样式表之间有什么区别? 问题答案: 默认样式表由浏览器供应商提供。 用户样式表由浏览器的用户提供。 作者样式表由网页的作者提供。

  • 问题内容: 是什么区别,并宣布一组样式时的元素,什么是决定使用哪一个时发挥作用的语义? 问题答案: 是的,它们是不同的… 是[ID选择器,用于定位具有唯一ID的_单个_特定元素,但。是一个类选择器,用于将特定类的 多个 元素作为目标。换一种方式: 将为带有属性声明的 单个 元素设置样式 将使用属性设置_所有_元素的样式(您也可以将多个类分配给一个元素,只需将它们用空格隔开,例如) 典型用途 一般来