小编Cen*_*ime的帖子

Python过载原语

我正在尝试重载字符串内置的一些方法.我知道没有真正合法的用例,但这种行为仍然让我感到烦恼,所以我想得到一个解释这里发生的事情:

使用Python2和forbiddenfruit模块.

>>> from forbiddenfruit import curse
>>> curse(str, '__repr__', lambda self:'bar')
>>> 'foo'
'foo'
>>> 'foo'.__repr__()
'bar'
Run Code Online (Sandbox Code Playgroud)

正如您所看到的,该__repr__函数已成功重载,但在我们要求表示时实际上并未调用.这是为什么?

那么,你将如何做到预期的行为:

>>> 'foo'
'bar'
Run Code Online (Sandbox Code Playgroud)

没有关于设置自定义环境的限制,如果重建python是它所需要的,那就这样吧,但我真的不知道从哪里开始,我仍然希望有一个更简单的方法:)

python overloading

9
推荐指数
1
解决办法
473
查看次数

标签 统计

overloading ×1

python ×1