如何更改类型(对象)的结果?

xor*_*yst 5 python oop string

我正在使用一个第三方的Python模块,它做的事情很可怕,例如:

def foo(x):
    if type(x) is str:
        do_useful_thing()
Run Code Online (Sandbox Code Playgroud)

我有一个子类的类str

class mystr(str):
   ....
Run Code Online (Sandbox Code Playgroud)

我想调用foo()一个mystr实例,但是由于失败type(mystr) != type(str)。有什么办法可以使我的课堂上课type(mystr) == type(str)并因此被foo接受吗?

我知道正确的解决方案是使用第3方模块isinstance,但不幸的是我无法更改它。

Dan*_*den 4

发布评论部分的共识作为答案:即使可以做这种事情,这也是一个非常糟糕的主意。即使你有时让它工作,它也会导致其他地方发生奇怪的事情。

正确的答案是联系第三方库的作者并尝试与他们解决问题。或者,如果可能的话,分叉该库并维护您自己的没有此限制的版本。