Ruby可以向Number类和其他核心类型添加方法以获得如下效果:
1.should_equal(1)
Run Code Online (Sandbox Code Playgroud)
但似乎Python无法做到这一点.这是真的?如果是这样,为什么?是否与类型无法修改的事实有关?
更新:我不想谈论猴子修补的不同定义,而是只关注上面的例子.我已经得出结论,由于你们中的一些人已经回答,所以无法做到.但我想更详细地解释为什么不能这样做,也许如果Python中有什么功能可以允许这样做.
回答你们中的一些人:我可能想要这样做的原因只是美学/可读性.
item.price.should_equal(19.99)
Run Code Online (Sandbox Code Playgroud)
这更像是英语,并清楚地表明哪个是测试值,哪个是预期值,如下所示:
should_equal(item.price, 19.99)
Run Code Online (Sandbox Code Playgroud)
这个概念就是Rspec和其他一些Ruby框架所基于的.
ruby python programming-languages fluent-interface monkeypatching
如何将自定义方法添加到内置python数据类型?例如,我想从这个问题实现一个解决方案,但能够按如下方式调用它:
>>> s = "A string with extra whitespace"
>>> print s.strip_inner()
>>> A string with extra whitespace
Run Code Online (Sandbox Code Playgroud)
那么我该如何定义自定义.strip_inner()字符串方法呢?
我如何编写可附加到字符串(或其他对象)的python函数?
例如:
"FOO".lower()
Run Code Online (Sandbox Code Playgroud)
他们如何收到投入?他们是发电机吗?
我会高兴地读到它,但我真的不知道我在寻找什么.