Python 2.7中的旧式和新式类?

Use*_*ser 24 python class new-style-class python-2.7

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

Python 2.7中新式和旧式类的当前状态是什么?我不经常使用Python,但我依旧记得这个问题.文档似乎根本没有提到这个问题:Python教程:类.我还需要担心吗?一般来说,我应该声明我的类:

class MyClass:
    pass
Run Code Online (Sandbox Code Playgroud)

要么?

class MyClass(object):
    pass
Run Code Online (Sandbox Code Playgroud)

Rei*_*ees 25

始终是"对象"的子类.这些都是新款式.

  • 你已经准备好了python 3.

  • .super()如果你需要它们,就像这样正常工作.

  • 更不用说方法装饰器(`@ property`,`@ classmethod`和`@ staticmethod`)只适用于新式类. (6认同)
  • 你不能在py3中做"类MyClass:"而它仍然是一个新的样式类吗? (3认同)

Nli*_*tis 10

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

新风格类有几个要提供的东西,例如:

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

资源.