在python中从`object`派生类

时间:2010-08-02 01:00:06

标签: python class inheritance

所以我只是学习python(我知道很多其他语言)而且我对某些事感到困惑。我认为这是由于缺乏文档(至少我能找到)。在一些网站上,我读过你应该从object派生你的课程:


class Base(object):
    pass

但我不知道那是做什么或为什么或何时应该这样做。我是否错过了关于此的官方文件?这是一个3.x功能吗?

3 个答案:

答案 0 :(得分:22)

大多数情况下,你是否从对象继承并不重要,但是如果你不这样做,那么当你忘记了你决定不去打扰时,有些错误会等着你。

如果你最终没有从对象继承,一些微妙的东西将无法正常工作:

  1. 在经典类中使用属​​性仅部分有效:get正常工作,但set做了奇怪的事情。
  2. 多重继承在经典类中的行为与在从对象派生的类中的行为不同。
  3. 如果您尝试将经典类与子类对象混合使用,那么多重继承将无效。无论你做什么,你都希望保持一致。
  4. 有些人继续使用经典课程是好的,除非他们需要新的行为,其他人则说总是使用新的风格课程以避免以后拍摄自己的脚。如果你正在为一个人工作,做任何对你有益的事情;如果它的共享项目与其他开发人员保持一致。

答案 1 :(得分:7)

从这里开始:http://www.python.org/doc/newstyle/

另外,请阅读:http://docs.python.org/release/2.5.2/ref/node33.html

它是版本3中不再需要的几个Python 2临时解决方案之一。

答案 2 :(得分:4)

在Python 3中,无论你是否自己这样说,类都会隐式扩展对象。

请参阅here