2013-11-25 76 views
2

对于一个类定义,没有继承,有什么区别或风格偏好:M类:或M类():?

class M: 
    pass 

class M(): 
    pass 

我在PEP8中找不到它。

+0

如果它不是在PEP8,另一个好的地方获得建议是通过查看标准库 –

+0

FWIW,我仍然陷入虽然它在python3.x中毫无意义...... – mgilson

+0

@mgilson:因为他们重写了教程以删除所有的(对象)基础,所以我认为它是再也不能站出来说“每个人都应该总是从”物体“继承下来,它仍然是完美的可以总是这样做,但这仍然留下了“人们什么时候不这样做,他们应该怎么拼出来”的问题,这是OP的要求。 – abarnert

回答

7

它不在PEP 8中,因为在Python 3的早期,Guido建议每个人都应该在过渡期间明确从object继承。可能这应该更新...

但是,如果您查看文档中不使用class M(object):的所有示例,它们都使用第一种格式class M:

例如,请参阅Class Definition SyntaxClass Objects以及本教程中的所有以下部分。 (并且请注意,本教程甚至没有解释您可以在括号内使用零基类。)

(另外,至少对我来说,第二种格式意味着您明确地试图从无到有继承,这是误导,而第一个暗示,你只是在做任何默认设置。)

+1

+1。实际上,PEP8实际上是用Python 2编写的,当[实际差异](明确地继承)之间有一个[实际差异](http://stackoverflow.com/questions/54867/old-style-and-new-style-classes-in-python) 'object'并且什么都没有指定。我也同意,如果从对象继承的空括号会使它有点模糊(尽管它总是会)。所以第一种方式将是首选。 – poke

+0

@poke:很好的补充。但PEP8应该随着语言的发展而变化(最近最新修订于2013年8月1日),所以现在可能应该涵盖这种情况。但是,如果有人非常关心,想要更改它,那么就需要在bug跟踪器或其中一个列表上进行讨论。 – abarnert

相关问题