制作 'int' 的子 class 但类型仍然是 return 'int'

Making a sub class of 'int' but still return 'int' in type

我正在尝试向 python 中的 'int' class 添加一些功能。我希望能够将此 subclass 的 type() 或 isinstance() 仍然 return 作为一个 int,这样我就可以与 int 的值进行比较。

我的代码如下

testValue = 5    # create int test value
bint      = int  # To save the reference, so I can call the correct int in my class below
class Integer(bint):
    def __new__(cls, *args, **kwargs):
        try:
            return_Value = bint(args[0])
        except:
            return_Value = bint(args[0], 16)
        finally:
            return super(Integer, cls).__new__(cls, return_Value)

int = Integer # Overwrite the buildin 'int' class

但是如果我对这些名称调用 isinstance(),我不会得到相同的结果。

print(isinstance(testValue, bint))
print(isinstance(int, bint))

那里的两个调用return如下:

True
False

如果我使用 type()

print(type(testValue))
print(type(int))

我明白了

<class 'int'>
<class 'type'>

是否无法屏蔽子class,使其return成为父级?

原因是在 micropython 'int' 中没有超过一个参数,但是在 pc 上执行相同的代码 'int' class 需要信息是否要转换 HEX 或 BIN 字符串值。所以为了能够 运行 在本地进行调试,我需要更改 'int'

的功能

编辑

我想做的是对我的 'testValue' 进行类型检查,它是 class 整数。并将其与 'int' 进行比较,后者既可以是内置 'int' class 也可以是我自己的 subclass

if type(testValue) == int:
    pass

此致

我找到了解决问题的方法。然而,它并不完全理想,但它确实有效。

使用以下代码

TestValue = 5

bint      = int

class Integer:

    def __new__(cls, *args, **kwargs):
        try:
            return_Value = bint(args[0])
        except:
            return_Value = bint(args[0], 16)
        finally:
            return return_Value
              
int = Integer

我可以通过以下条件进行比较成功

if type(TestValue) == type(int(0)):
    pass

这在本地和 micropython 中都有效。