制作 '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 中都有效。
我正在尝试向 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 中都有效。