你能修改 Python 中的核心类型吗?
Python 爱好者可能熟悉 Ruby 扩展 Number 类和其他类的有趣功能。基本类型。此功能允许添加多种方法,开辟了迷人的可能性。然而,一个紧迫的问题出现了:Python 可以复制这种行为吗?
不可变的基础
令 Python 爱好者沮丧的是,猴子修补核心类型仍然是一个未实现的梦想。与 Ruby 不同,Python 的基本数据结构驻留在 C 扩展模块中,具有坚定的不变性。这种无敌源于这样一个事实:这些 C 模块在支持单个进程中的多个解释器方面发挥着至关重要的作用。允许更改会造成严重破坏,可能会损害共享同一模块的不相关解释器的完整性。
本地化猴子修补
虽然核心类型仍然不可触及,但 Python 提供了一线希望Python 代码库中定义的类的希望。与不可变的对应类不同,这些本地类可以随着猴子补丁的节奏起舞。这种区别源于它们被限制在本地解释器中,确保它们的修改保持隔离。
划分的原因
核心类型和 Python 定义的类之间的差异源于它们不同的性质。核心类型包含在 C 模块中,由多个解释器共享。无节制的猴子修补有可能给这个共享领域带来混乱。另一方面,Python 定义的类在各自的解释器中相对隔离,允许在不破坏集体的情况下进行恶作剧的更改。
以上是你能在 Python 中猴子修补核心类型吗?的详细内容。更多信息请关注PHP中文网其他相关文章!