2024-05-14 07:38:32 发布
网友
为什么必须在所有新创建的父类中传递“object”作为参数?你知道吗
class Fish(object): pass class Goldfish(Fish): pass
我们不能把传递对象作为一个参数来处理吗?你知道吗
class Fish: pass class Goldfish(Fish): pass
在python3中,可以省略它。在Python2中,您不希望将其遗漏。你知道吗
如果您想知道Python为什么要从object继承,而不仅仅是为什么要从object继承(delnan已经回答了这个问题):
object
Guido在他的Python历史博客New-style Classes上有一篇很好的文章。它解释了python2.1中类的错误(他链接到a previous post,解释了类最初被设计为hack*的原因)。你知道吗
那么,为什么不在python2.2中将所有内容都更改为新样式的类呢?因为这会破坏很多现有的代码。^例如,{}多年没有更新,**它是标准库的一部分。你知道吗
在python3.0中,如果一些现有的代码值得的话,可以将其破坏,因此他们最终做出了改变:没有定义基类的类不是旧样式的类,而是继承自object的新样式的类。你知道吗
*另请看The inside story on new-style classes,Method resolution order-见鬼,只要看一下整个博客;Guido是个好作家,你会学到很多。:)
**2.7版本的Tkinter仍然使用旧样式的类,但是如果您编辑代码将所有内容都更改为从object继承,它就可以工作了。我相信直到2.5或2.6才是这样。
Tkinter
你可以把它省掉。在Python2中,这将使这两个类都成为您真正想要避免的所谓的旧式类(许多好的东西不能很好地与它们一起工作),因此准则是包含它。在python3中,省略(object)完全等同于编写它,即没有区别。你知道吗
(object)
在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 classes,Method resolution order-见鬼,只要看一下整个博客;Guido是个好作家,你会学到很多。:)
**2.7版本的
Tkinter
仍然使用旧样式的类,但是如果您编辑代码将所有内容都更改为从object
继承,它就可以工作了。我相信直到2.5或2.6才是这样。你可以把它省掉。在Python2中,这将使这两个类都成为您真正想要避免的所谓的旧式类(许多好的东西不能很好地与它们一起工作),因此准则是包含它。在python3中,省略
(object)
完全等同于编写它,即没有区别。你知道吗相关问题 更多 >
编程相关推荐