7

下面这两个类有什么区别?你有关于这个案子的一些相关信息吗?非常感谢你。

class test(object):
  def __init__(self, name):
     print name

class test():
  def __init__(self, name):
     print name
4

3 回答 3

4

在 python 2.x 中,继承自的类object将是 new-style 类,而另一个不会,而在 python 3.x 中,两者都会有 new-style。

但是新旧的区别比较大,(比如属性搜索顺序)所以初学者不用太在意不兼容的问题。

如果您有兴趣,请参阅此答案以获取更多信息,但这对于库开发人员等来说是一件相当重要的事情。

于 2012-09-14T15:41:57.003 回答
4

嗯......这个维基页面非常说明性地解释了这些差异:http ://wiki.python.org/moin/NewClassVsClassicClass

我看到了一些关于信息的答案,旧(经典)样式和新样式类在 py3中是相同的 -> 这是不正确的:

在此处输入图像描述 Python 3中删除了旧式类,只保留了新式类的语义

除此之外,New-Style 类从 Python 2.2 开始就非常可用。在 2.1 之前,我们不得不使用 Classic 风格-> 见这里

关于差异/信息的简短摘要可能是:

  • 从 Python 2.2 开始提供 New-Style 类
  • 新式类可以使用描述符 - 旧式类不能
  • 新样式类可以继承大多数内置类型 - 旧样式类不能
  • 新样式类支持一个新的元模型(它会影响例如type()大量内置的行为)
  • 旧式类会先在实例上找到一个属性,然后再查看层次结构 - 如果类定义是可写描述符,新式类将使类定义获胜
  • Python 3 中删除了旧式类

但在大多数情况下,新式类的引入受到了 python描述符的影响 --> 在此处阅读更多内容

于 2012-09-14T16:32:17.460 回答
-3

在这种情况下,没有,因为第一个显式继承自作为基类的 object,而第二个隐式继承自 object。

于 2012-09-14T15:31:02.650 回答