Python类定义语法

Fal*_*rri 70 python class

两者之间有区别吗?

class A:
    ...
Run Code Online (Sandbox Code Playgroud)

class A():
    ...
Run Code Online (Sandbox Code Playgroud)

我刚刚意识到我的几个类被定义为前者,它们工作得很好.空括号有什么区别吗?

Raf*_*ler 64

虽然它可能不是语法不正确使用空括号中的类定义,括号中的类定义用于指示继承,如后:

class A(baseClass):
    ...
Run Code Online (Sandbox Code Playgroud)

在Python中,没有任何基类的类声明的首选语法就是:

class A:
    ...
Run Code Online (Sandbox Code Playgroud)

除非您是其他类的子类,否则不要使用括号.

对此事的文档应该给你一个更好地了解如何在Python声明和使用类.


Ign*_*ams 20

后者是旧版本Python的语法错误.在Python 2.x中,您应该object尽可能地派生,因为几个有用的功能仅适用于新式类(派生自objectPython 3.x中的可选项,因为新式类是默认类).

  • 在python 3中不再正确; 所有来自`object`废话的东西都是自动处理的. (7认同)
  • 类A()是否曾经出现语法错误?[Python 1.4文档](https://docs.python.org/release/1.4/ref/ref7.html#REF23237)表示还可以,并且这些文档仍然是python.org上最古老的文档。 (3认同)