26

可能重复:
Python 中的旧样式和新样式类

Python 2.7 中新式和旧式类的现状如何?

我不经常使用 Python,但我隐约记得这个问题。文档似乎根本没有提到这个问题:The Python Tutorial: Classes。我还需要担心这个吗?一般来说,我应该像下面这样声明我的类吗?

class MyClass:
    pass

或者?

class MyClass(object):
    pass
4

2 回答 2

26

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

  • 你已经为 Python 3 做好了准备。

  • .super()如果你需要的话,像这样正常工作的事情。

于 2012-12-11T09:07:33.763 回答
11

您应该始终使用新的样式类。新式类是在 Python 编程语言中统一内置类型和用户定义类的努力的一部分。

新样式类有几样东西可以提供,例如:

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

资源。

于 2012-12-11T09:17:12.867 回答