2010-11-05 47 views
34

Python类定义语法

class A: 
    ... 

class A(): 
    ... 

之间的差异我才意识到,一对夫妇我的课都被定义为前者,他们工作得很好。空括号是否有所作为?

回答

14

后者是旧版本Python的语法错误。在Python 2.x中,只要可能,您应该从object中派生出来,因为只有new-style classes(源自object在Python 3.x中是可选的,因为新样式类是默认类)的几个有用功能才可用。

+4

python 3中不再是真;所有源自“对象”废话的内容都会自动处理。 – Aerovistae 2013-09-19 19:10:53

35

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

class A(baseClass): 
    ... 

在Python中,一类首选语法声明没有任何基础类很简单:

class A: 
    ... 

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

docs on the matter应该让你更好地理解如何在Python中声明和使用类。