为了账号安全,请及时绑定邮箱和手机立即绑定

你可以在Python中的核心类型上修补补丁方法吗?

你可以在Python中的核心类型上修补补丁方法吗?

慕侠2389804 2019-08-12 17:51:56
你可以在Python中的核心类型上修补补丁方法吗?Ruby可以向Number类和其他核心类型添加方法以获得如下效果:1.should_equal(1)但似乎Python无法做到这一点。这是真的?如果是这样,为什么?是否与类型无法修改的事实有关?更新:我不想谈论猴子修补的不同定义,而是只关注上面的例子。我已经得出结论,由于你们中的一些人已经回答,所以无法做到。但是我想更详细地解释为什么不能这样做,也许如果Python中有什么功能允许这样做。回答你们中的一些人:我可能想要这样做的原因只是美学/可读性。 item.price.should_equal(19.99)这更像是英语,并清楚地表明哪个是测试值,哪个是预期值,如下所示:should_equal(item.price, 19.99)这个概念就是Rspec和其他一些Ruby框架所基于的。
查看完整描述

3 回答

?
鸿蒙传说

TA贡献1865条经验 获得超7个赞

你不能。在Python中,C扩展模块(包括内置函数)中定义的所有数据(类,方法,函数等)都是不可变的。这是因为C模块在同一进程中的多个解释器之间共享,因此monkeypatching它们也会影响同一进程中不相关的解释器。(通过C API可以在同一个过程中使用多个解释器,并且已经做了一些努力使它们在Python级别可用。)

但是,Python代码中定义的类可能是monkeypatched,因为它们是该解释器的本地。


查看完整回答
反对 回复 2019-08-12
  • 3 回答
  • 0 关注
  • 589 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信