我目前正在学习Python 2.6.5,了解到有旧式类和新式类的概念。
据我所知,这些类仅为向后兼容而存在,并且在Python 3中已被删除。
那么问题来了:作为一名新手,我需要学习经典类吗?
P.S. 我正在学习Python 2,因为在框架中Python 3仍未得到完全支持,我也想学习一些框架。计划是在框架跟上之后转向Python 3,但在此之前,我需要担心旧式类吗?
我目前正在学习Python 2.6.5,了解到有旧式类和新式类的概念。
据我所知,这些类仅为向后兼容而存在,并且在Python 3中已被删除。
那么问题来了:作为一名新手,我需要学习经典类吗?
P.S. 我正在学习Python 2,因为在框架中Python 3仍未得到完全支持,我也想学习一些框架。计划是在框架跟上之后转向Python 3,但在此之前,我需要担心旧式类吗?
不用担心,只需让你的所有类都从object
(或继承自object
的类)继承即可。这样当你转向Python 3时,你就可以忘记那部分语法。
目前使用旧式类没有任何优势甚至学习也没有必要。
所以请确保你所有的类声明看起来像这样:
class foo(object):
...
(或从除了object
之外的其他东西继承,该东西确实继承自object
),然后假装这一直是它的方式!
例如,使用旧式类,你无法使用super
调用父方法 - 当你尝试子类化urllib2.Request
类时,这可能会对你产生影响。如果你不知道这一点,你将会得到晦涩难懂的错误信息super() argument 1 must be type, not classobj
,这可能需要很长时间才能进行调试。
(正如你可能已经猜到的那样,我曾经历过这种情况...)