Python - 我需要学习旧式类吗?

5

我目前正在学习Python 2.6.5,了解到有旧式类和新式类的概念。

据我所知,这些类仅为向后兼容而存在,并且在Python 3中已被删除。

那么问题来了:作为一名新手,我需要学习经典类吗?

P.S. 我正在学习Python 2,因为在框架中Python 3仍未得到完全支持,我也想学习一些框架。计划是在框架跟上之后转向Python 3,但在此之前,我需要担心旧式类吗?

2个回答

13

不用担心,只需让你的所有类都从object(或继承自object的类)继承即可。这样当你转向Python 3时,你就可以忘记那部分语法。

目前使用旧式类没有任何优势甚至学习也没有必要。

所以请确保你所有的类声明看起来像这样:

class foo(object):
    ...

(或从除了object之外的其他东西继承,该东西确实继承自object),然后假装这一直是它的方式!


4
虽然我同意Daniel DiPaolo的观点,即你永远不需要在代码中使用旧式类,但有时你需要稍微了解一下它们。

例如,使用旧式类,你无法使用super调用父方法 - 当你尝试子类化urllib2.Request类时,这可能会对你产生影响。如果你不知道这一点,你将会得到晦涩难懂的错误信息super() argument 1 must be type, not classobj,这可能需要很长时间才能进行调试。

(正如你可能已经猜到的那样,我曾经历过这种情况...)


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接