2011-02-18 42 views
5

我目前正在学习Python 2.6.5,并且发现了旧式类和新式样类。Python - 我需要了解旧式类吗?

据我所知,这些类仍然存在只是为了向后兼容,他们在Python 3

被删除所以现在的问题是这样的:作为一个初来乍到的语言,我需要了解经典课程?

P.S.我正在学习Python 2,因为Python 3在框架中还没有完全支持,我也想学习一些框架。当框架迎头赶上时,计划将转向Python 3,但在那之前,我需要担心旧的类风格吗?

回答

13

不,不要打扰。从object(或继承自object的类)继承所有的课程,您就可以顺利完成任务。然后,当你转换到Python 3时,你可以忘记这一点的语法。

在这一点上使用甚至学习旧式课程没有任何优势。

因此,只要确保所有类声明的是这样的:

class foo(object): 
    ... 

(或比object确实继承object其他的东西继承),然后假装这是它的方式一直以来!

4

尽管我同意Daniel DiPaolo的说法,您应该永远不需要在代码中使用使用旧式类,但有时您需要稍微了解它们。

例如,对于旧式类,您不能使用super来调用父级方法 - 并且在尝试子类时可能会咬你,例如urllib2.Request类。如果你这样做没有意识到你会得到神秘的错误super() argument 1 must be type, not classobj,这可能需要很长时间才能调试。

(正如你可能会说,我去过那里......)

+0

+1:http://www.artima.com/weblogs/viewpost.jsp?thread=237121 – 2011-02-18 22:43:19