Python类定义语法

156 投票
3 回答
54661 浏览
提问于 2025-04-16 06:38

这两段代码有什么区别吗?

class A:
    ...

class A():
    ...

我刚发现我的几个类是用前面那种方式定义的,而且它们运行得很好。那空的括号有什么影响吗?

3 个回答

4

类的定义和函数/方法的定义有点不同。

在类的定义中,括号是用来说明你是从哪个类继承的。你不需要在前面加上def这个关键词,而且如果你是从默认的'object'类继承,就不需要括号。

所以你可以写成这样:

class C():

或者这样:

class C:

而函数/方法的定义总是需要括号,即使你没有定义参数。如果不加括号,你会遇到语法错误。

在代码中定义完类/函数/方法后,直接写名字就能指向这个类/函数/方法。

如果你想调用或访问这些东西,就需要用到()、[]、.或者其他符号。

150

虽然在类定义中使用空括号在语法上可能没有错,但在类定义后加上括号是用来表示继承的,比如:

class A(baseClass):
    ...

在Python中,如果一个类没有父类,最简单的写法就是:

class A:
    ...

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

关于这个问题的文档可以帮助你更好地理解如何在Python中声明和使用类。

35

在旧版本的Python中,这种写法会导致语法错误。在Python 2.x中,尽量从object这个类继承,因为只有这样才能使用一些很有用的功能,这些功能只在新式类中提供(在Python 3.x中,从object继承是可选的,因为新式类在那里的默认设置就是这样)。

撰写回答