Python类定义语法


90

两者之间有区别吗

class A:
    ...

class A():
    ...

我只是意识到我的几个类都被定义为前一个类,并且效果很好。空括号有什么区别吗?

Answers:


22

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


7
在python 3中不再适用;object废话派生的一切都会自动得到照顾。
临时用户名

4
当时class A()曾经有语法错误?在Python的1.4文档说它的罚款,而这些都是最古老的文档仍然可以在python.org。
user2357112支持Monica19'1

86

虽然在类定义中使用空括号可能在语法上是不正确的,但是使用类定义之后的括号来表示继承,例如:

class A(baseClass):
    ...

在Python中,不带任何基类的类声明的首选语法很简单:

class A:
    ...

除非要继承其他类,否则不要使用括号。

有关此问题文档应使您更好地了解如何在Python中声明和使用类。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.