Python 3.x 的超级魔法:解开谜团
Python 3.x 在其 super() 方法中引入了令人惊讶的转折,允许不带参数的调用。这种看似无害的变化在幕后却带来了重大的后果和内在的魔力。
揭开魔力
为了维护 DRY 原则,新的 super() 行为绕过了显式类命名。它有一个特殊的 class 单元格,用于检索原始类对象,避免了困扰之前超级方法的重新绑定的陷阱。
魔法的后果
不幸的是,这个魔法有一个缺点。将 super() 名称重新绑定到不同的变量(例如 super_)可能会破坏其功能。发生这种情况的原因是,仅当在方法中引用 super 或 class 时才会创建单元格。
实际陷阱
此行为可能会带来风险毫无戒心的程序员:
超越 Super()
有趣的是,super() 并不是唯一受重新绑定问题影响的 Pythonic 实体。其他示例包括:PyPy 的 RPython 中的
对开发人员的影响
虽然 super() 的魔力很有用,但仍需谨慎。了解其复杂性有助于防止运行时错误。使用重新绑定时,程序员应考虑显式引用 class 或利用替代的 super() 调用方法。
以上是Python 3.x 的 Super() 在没有参数的情况下如何工作?潜在的陷阱是什么?的详细内容。更多信息请关注PHP中文网其他相关文章!