Python-我需要学习旧式类吗?
我目前正在学习Python2.6.5,我发现了关于旧样式类和新样式类的知识 我知道这些类仍然存在只是为了向后兼容,它们在Python3中被删除了 所以问题是:作为语言的新手,我需要学习经典课程吗?Python-我需要学习旧式类吗?,python,class,types,language-features,Python,Class,Types,Language Features,我目前正在学习Python2.6.5,我发现了关于旧样式类和新样式类的知识 我知道这些类仍然存在只是为了向后兼容,它们在Python3中被删除了 所以问题是:作为语言的新手,我需要学习经典课程吗? 另外,我正在学习Python2,因为Python3在框架中还没有完全得到支持,我也想学习一些框架。计划是在框架迎头赶上时转向Python 3,但在此之前,我需要担心旧式类吗?不,不用麻烦了。只需从对象(或从对象继承的类)继承您的所有类即可。然后,当您转换到Python3时,您可以忘记一些语法 在这一点
另外,我正在学习Python2,因为Python3在框架中还没有完全得到支持,我也想学习一些框架。计划是在框架迎头赶上时转向Python 3,但在此之前,我需要担心旧式类吗?不,不用麻烦了。只需从
对象
(或从对象
继承的类)继承您的所有类即可。然后,当您转换到Python3时,您可以忘记一些语法
在这一点上,使用或甚至学习旧式课程没有任何好处
因此,只需确保所有类声明如下所示:
class foo(object):
...
(或者从
对象
以外的对象继承,而该对象确实从对象
继承),然后假装这是它一直以来的方式 尽管我同意Daniel DiPaolo的观点,即在代码中永远不需要使用旧式类,但有时您需要稍微了解它们
例如,对于旧样式的类,您不能使用super
调用父方法,这可能会在您尝试创建子类(例如urllib2.Request
类)时影响您。如果在没有意识到的情况下执行此操作,将得到一个神秘的错误super()参数1必须是type,而不是classobj
,这可能需要很长时间才能调试
(你可能知道,我去过那里……)