我看到一些关于这个话题的类似问题,但我希望确定,所以我在问......
有什么区别:
class MyClass:
pass
和
class MyClass():
pass
此外,这两者之间是否存在差异:
class MyClass():
pass
class MyClass(object):
pass
答案 0 :(得分:7)
class MyClass
和class MyClass()
之间没有区别。第二个问题取决于你的python版本。在python3.x上,没有区别 - 在python2.x上,后者(你从object
继承)创建了一个new-style class而不是一个旧式的类。在python3.x中,所有类都是新式的。现在,新的样式类是首选 - 因此,我始终确保我的类继承自object。
答案 1 :(得分:5)
前两个拼写之间没有区别。
在python 2.7中,后两者之间存在巨大的差异。继承自object
使其成为new-style class,更改继承语义并添加对描述符(@property
,@classmethod
等)的支持。这是Python 3中的默认设置。
在Python 2.2中引入了新式类来统一类型(例如int
和list
)和类,并且因为有些东西以向后不兼容的方式发生变化,所以你需要'选择in',明确继承自object
以启用更改。
在Python 3中,不再需要从object
继承,类总是新式的。
答案 2 :(得分:3)
类型class MyClass(object)
的类声明在Python 2.x上是New Style classes
Guido写了关于History of Python
中新课程的一些想法