我正在使用一个 3rd-party Python 模块,它做了一些可怕的事情,比如:
def foo(x):
if type(x) is str:
do_useful_thing()
我有一个子类 str
的类:
class mystr(str):
....
我想在 mystr
实例上调用 foo()
,但它失败了,因为 type(mystr) != type(str)
。有什么方法可以让我的类(class) type(mystr) == type(str)
从而让 foo
接受它?
我知道正确的解决方案是让第 3 方模块使用 isinstance
,但遗憾的是我无法更改它。
最佳答案
将评论部分的共识发布为答案:即使可以做这种事情,这也是一个非常糟糕的主意。即使您让它在某些时间正常工作,它也会导致其他地方发生奇怪的事情。
正确的做法是联系第三方库的作者,尝试和他们一起解决。或者,如果可能的话, fork 该库并维护您自己的没有此限制的版本。
关于python - 如何更改类型(对象)的结果?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55957933/