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

标签 python string oop

我正在使用一个 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/

相关文章:

java - 当 Java 类没有父类时,是否应该调用 super() ?

python - Web服务在Airflow Docker容器中不起作用

python - 如何在类中并行化 python 中的 for?

string - 范围内的算术运算顺序问题

regex - PostgreSQL 9 : substring with regex to get string between string and pipe

c - 在 C 中,为什么不能在声明后将字符串分配给 char 数组?

javascript - 模拟 Javascript 面向对象编程 Stoyan Stefanov 书中的字符串 split()

java - 深度嵌套继承——好的还是坏的做法?

python - opencv Python 罗德里格斯

python - python中的matlab ismember函数