【问题标题】:Python - do I need to learn about old style classes?Python - 我需要了解旧式类吗?
【发布时间】:2011-06-30 03:13:33
【问题描述】:

我目前正在学习 Python 2.6.5,我发现了旧样式类和新样式类。

我了解这些类仍然存在只是为了向后兼容,并且它们在 Python 3 中已被删除。

所以问题是这样的:作为语言的新手,我需要学习经典课程吗?

附:我正在学习 Python 2,因为框架仍然不完全支持 Python 3,我也想学习一些框架。计划在框架赶上时迁移到 Python 3,但在那之前,我需要担心旧样式类吗?

【问题讨论】:

    标签: python class types language-features


    【解决方案1】:

    没有。不要打扰。只需从object(或从object 继承的类)继承所有类,您就可以开始了。然后,当您过渡到 Python 3 时,您可能会忘记那一点语法。

    此时使用甚至学习旧式类没有任何优势。

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

    class foo(object):
        ...
    

    (或继承自 object 以外的东西,而 确实 继承自 object),然后假装这就是它一直以来的方式!

    【讨论】:

      【解决方案2】:

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

      例如,对于旧式类,您不能使用 super 调用父方法 - 这可能会在您尝试子类化时对您不利,例如 urllib2.Request 类。如果您在没有意识到的情况下执行此操作,您将收到神秘错误super() argument 1 must be type, not classobj,这可能需要很长时间才能调试。

      (如你所知,我去过那里......)

      【讨论】:

        猜你喜欢
        • 2023-04-08
        • 2017-05-27
        • 1970-01-01
        • 2011-04-16
        • 1970-01-01
        • 1970-01-01
        • 2011-09-09
        • 2018-08-11
        • 1970-01-01
        相关资源
        最近更新 更多