在python中,为什么我们总是要在父类中指定'object'作为参数?

2024-05-14 07:38:32 发布

您现在位置:Python中文网/ 问答频道 /正文

为什么必须在所有新创建的父类中传递“object”作为参数?你知道吗

class Fish(object):
    pass
class Goldfish(Fish):
    pass

我们不能把传递对象作为一个参数来处理吗?你知道吗

class Fish:
    pass
class Goldfish(Fish):
    pass

Tags: 对象参数objectpassclassfishgoldfish父类
3条回答

在python3中,可以省略它。在Python2中,您不希望将其遗漏。你知道吗

如果您想知道Python为什么要从object继承,而不仅仅是为什么要从object继承(delnan已经回答了这个问题):

Guido在他的Python历史博客New-style Classes上有一篇很好的文章。它解释了python2.1中类的错误(他链接到a previous post,解释了类最初被设计为hack*的原因)。你知道吗

那么,为什么不在python2.2中将所有内容都更改为新样式的类呢?因为这会破坏很多现有的代码。^例如,{}多年没有更新,**它是标准库的一部分。你知道吗

在python3.0中,如果一些现有的代码值得的话,可以将其破坏,因此他们最终做出了改变:没有定义基类的类不是旧样式的类,而是继承自object的新样式的类。你知道吗


*另请看The inside story on new-style classesMethod resolution order-见鬼,只要看一下整个博客;Guido是个好作家,你会学到很多。:)

**2.7版本的Tkinter仍然使用旧样式的类,但是如果您编辑代码将所有内容都更改为从object继承,它就可以工作了。我相信直到2.5或2.6才是这样。

你可以把它省掉。在Python2中,这将使这两个类都成为您真正想要避免的所谓的旧式类(许多好的东西不能很好地与它们一起工作),因此准则是包含它。在python3中,省略(object)完全等同于编写它,即没有区别。你知道吗

相关问题 更多 >

    热门问题