关于类:Python2.7中的旧样式和新样式类?

old-style and new-style classes in Python 2.7?

本问题已经有最佳答案,请猛点这里访问。

Possible Duplicate:
Old style and new style classes in Python

在Python2.7中,新样式和旧样式类的现状是什么?我不经常使用Python,但我模糊地记得这个问题。文档似乎根本没有提到这个问题:Python教程:类。我还需要为此担心吗?一般来说,我应该声明我的类如下:

1
2
class MyClass:
    pass

还是?

1
2
class MyClass(object):
    pass


总是子类"对象"。这些是新样式的类。

  • 这样就可以使用python 3了。

  • .super()这样的东西可以正常工作,如果你需要的话。


您应该总是使用新的样式类。新的样式类是统一Python编程语言中内置类型和用户定义类的工作的一部分。

新样式类可以提供以下几种功能:

  • 属性:由get/set方法定义的属性
  • 静态方法和类方法
  • 新的getattribute钩子,与getattr不同,它被调用对于每个属性访问,不仅仅是当属性不能在实例中找到
  • 描述符:定义属性访问行为的协议通过对象
  • 重写构造函数new
  • 元类

来源。