3

我看到一些关于这个主题的类似问题,但我想确定,所以我问......

有什么区别:

class MyClass:
    pass

class MyClass():
    pass

另外,这两者之间是否有区别:

class MyClass():
    pass

class MyClass(object):
    pass
4

3 回答 3

7

class MyClass和之间没有区别class MyClass()。第二个问题取决于您的 python 版本。在 python3.x 上,没有区别——在 python2.x 上,后者(你从哪里继承object)创建一个新样式的类而不是旧样式的类。在 python3.x 中,所有的类都是新式的。这些天新样式类是首选——因此,我总是确保我的类继承自对象。

于 2013-02-12T14:52:35.353 回答
5

前两个拼写没有区别。

在 python 2.7 中,后两者之间存在巨大差异。继承自object使它成为一个新样式的类,改变了继承语义并增加了对描述符(@property,@classmethod等)的支持。这是 Python 3 中的默认设置。

Python 2.2 中引入了新样式的类来统一类型(例如intand list)和类,并且由于一些东西以向后不兼容的方式发生变化,您需要“选择加入”,显式继承object以启用更改。

在 Python 3 中,不再需要继承自object,类总是新样式。

于 2013-02-12T14:52:48.270 回答
3

该类型的类声明是class MyClass(object)Python 2.x 上的New Style 类

Guido 写了一些在Python 历史中带来新类的想法

于 2013-02-12T14:52:36.597 回答