在Python中定义一个类

Mar*_*ark 2 python class-design class

class Car:
    pass

class Car():
    pass
Run Code Online (Sandbox Code Playgroud)

这两者有什么区别?和,

a = Car

a = Car()
Run Code Online (Sandbox Code Playgroud)

还有,上面这两个有什么区别?

最好的祝福

Pwn*_*nna 8

第一个语句,a = Car只是aCar类创建一个别名.所以,在你这样做之后,你可以做到b = a()并且它会是一样的b = Car()

一旦你附加到()最后,它使python实际上初始化类(__call__或者只是初始化,但你不必担心这一点),并且a变成任何返回的Car(),在这种情况下,它是类实例.

至于class Car:和之间的区别class Car():.第二个是无效的语法(编辑:在2.5之前,我仍然会说这是一种糟糕的风格,因为如果你没有继承它就没有理由存在).你有括号的原因是你需要继承另一个类.

  • 从2.5开始,第二个语法不是无效的语法. (2认同)