Python类定义语法
这两段代码有什么区别吗?
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
继承是可选的,因为新式类在那里的默认设置就是这样)。