我看到一些关于这个主题的类似问题,但我想确定,所以我问......
有什么区别:
class MyClass:
pass
和
class MyClass():
pass
另外,这两者之间是否有区别:
class MyClass():
pass
class MyClass(object):
pass
class MyClass
和之间没有区别class MyClass()
。第二个问题取决于您的 python 版本。在 python3.x 上,没有区别——在 python2.x 上,后者(你从哪里继承object
)创建一个新样式的类而不是旧样式的类。在 python3.x 中,所有的类都是新式的。这些天新样式类是首选——因此,我总是确保我的类继承自对象。
前两个拼写没有区别。
在 python 2.7 中,后两者之间存在巨大差异。继承自object
使它成为一个新样式的类,改变了继承语义并增加了对描述符(@property
,@classmethod
等)的支持。这是 Python 3 中的默认设置。
Python 2.2 中引入了新样式的类来统一类型(例如int
and list
)和类,并且由于一些东西以向后不兼容的方式发生变化,您需要“选择加入”,显式继承object
以启用更改。
在 Python 3 中,不再需要继承自object
,类总是新样式。
该类型的类声明是class MyClass(object)
Python 2.x 上的New Style 类
Guido 写了一些在Python 历史中带来新类的想法