在Python中从`object`派生类

34 投票
3 回答
12788 浏览
提问于 2025-04-16 02:10

我正在学习Python(我已经会很多其他编程语言),但有些地方让我感到困惑。我觉得这可能是因为缺少相关的文档(至少我找不到)。在一些网站上,我看到说你应该让你的类继承自object


class Base(object):
    pass

但是我不明白这样做有什么用,为什么要这样做,或者什么时候应该这样做。难道我错过了什么官方文档吗?这是Python 3.x的特性吗?

3 个回答

8

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

另外,看看这个:http://docs.python.org/release/2.5.2/ref/node33.html

这是几个Python 2的临时解决方案之一,在版本3中就不再需要了。

11

在Python 3中,不管你是否特别提到,所有的类都会自动继承自一个叫做“对象”的东西。

你可以在这里了解更多。

29

其实,是否从对象(object)继承并不是特别重要,但如果你选择不继承,可能会在不经意间遇到一些麻烦。

有些细微的地方,如果你不从对象继承,可能就会出现问题:

  1. 在传统类中使用属性时,只能部分有效:get可以正常工作,但set会出现奇怪的情况。
  2. 在传统类中,多重继承的表现和从对象继承的类是不一样的。
  3. 如果你尝试将传统类和从对象继承的类混合使用,多重继承就会失效。无论你怎么做,都要保持一致。

有些人觉得继续使用传统类没问题,除非需要新特性;而另一些人则建议总是使用新风格的类,以免将来自己给自己带来麻烦。如果你是在做个人项目,随便用你觉得好的;如果是团队项目,就要和其他开发者保持一致。

撰写回答