【问题标题】:Deriving class from `object` in python从python中的`object`派生类
【发布时间】:2011-03-23 23:58:35
【问题描述】:

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

class Base(object): pass

但我不明白那是什么,为什么或什么时候应该这样做。有没有我错过的官方文件?这是 3.x 的功能吗?

【问题讨论】:

标签: python class inheritance


【解决方案1】:

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

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

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

【讨论】:

    【解决方案2】:

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

    如果您最终不从对象继承,一些微妙的事情将无法正常工作:

    1. 在经典类中使用属​​性只能部分起作用:get 可以正常工作,但 set 会做一些奇怪的事情。
    2. 多重继承在经典类中的行为与在从对象派生的类中的行为不同。
    3. 如果您尝试将经典类与子类对象混合使用,多重继承也将不起作用。无论您做什么,您都希望保持一致。

    有些人可以继续使用经典类,除非他们需要新的行为,其他人则说总是使用新样式类,以免以后误伤自己。如果你在做一个人的项目,做任何对你有好处的事情;如果它是一个共享项目与其他开发者保持一致。

    【讨论】:

    • 谢谢,这清楚了很多。我希望这被记录得更好
    【解决方案3】:

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

    here

    【讨论】:

      猜你喜欢
      • 2019-03-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-12-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多