Python 类定义语法

这两者之间有什么区别吗

class A:
...

还有

class A():
...

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

44617 次浏览

后者是旧版本 Python 的语法错误。在 Python 2.x 中,只要有可能,就应该从 object派生,因为有几个有用的特性只能在 新式班级中使用(在 Python 3.x 中,从 object派生是可选的,因为新样式的类是默认类)。

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

class A(baseClass):
...

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

class A:
...

不要使用括号,除非你是其他类的子类。

这件事的文件应该让您更好地理解如何在 Python 中声明和使用类。

类定义与函数/方法定义稍有不同。

类定义中的括号用于定义从哪个类继承。你不需要在它前面写 def,当你从默认的“ object”继承时,你不需要括号来定义。

所以你可以这样写:

class C():

或者:

class C:

函数/方法定义总是使用括号,即使你没有定义参数。如果你不使用它们,你会得到一个 SyntaxError。

稍后,在代码中定义了 class/function/method 之后,只要写下名称就会指向 class/function/method。

如果您想要调用或访问其中的任何一个,您将需要()、[]或其他任何东西。