【发布时间】:2011-03-23 23:58:35
【问题描述】:
所以我只是在学习 python(我知道很多其他语言)并且我对某些事情感到困惑。我认为这是由于缺乏文档(至少我能找到)。在一些网站上,我读到您应该从 object 派生您的类:
class Base(object):
pass
但我不明白那是什么,为什么或什么时候应该这样做。有没有我错过的官方文件?这是 3.x 的功能吗?
【问题讨论】:
标签: python class inheritance
所以我只是在学习 python(我知道很多其他语言)并且我对某些事情感到困惑。我认为这是由于缺乏文档(至少我能找到)。在一些网站上,我读到您应该从 object 派生您的类:
class Base(object):
pass
但我不明白那是什么,为什么或什么时候应该这样做。有没有我错过的官方文件?这是 3.x 的功能吗?
【问题讨论】:
标签: python class inheritance
从这里开始:http://www.python.org/doc/newstyle/
另外,请阅读:http://docs.python.org/release/2.5.2/ref/node33.html
它是版本 3 中不再需要的几个 Python 2 临时解决方案之一。
【讨论】:
大多数情况下,你是否从对象继承并不重要,但如果你不这样做,当你忘记你决定不去打扰时,就会有错误等着你发现。
如果您最终不从对象继承,一些微妙的事情将无法正常工作:
get 可以正常工作,但 set 会做一些奇怪的事情。有些人可以继续使用经典类,除非他们需要新的行为,其他人则说总是使用新样式类,以免以后误伤自己。如果你在做一个人的项目,做任何对你有好处的事情;如果它是一个共享项目与其他开发者保持一致。
【讨论】:
在 Python 3 中,无论你自己是否这么说,类都隐式地扩展了对象。
见here。
【讨论】: