如何在分配时使用不同的类替换整数

时间:2018-05-12 11:30:28

标签: python

我有一个名为newInteger的类,以及一个名为num的变量,但我希望num是newInteger()而不是int()。代码如下。

class newInteger(int):
    def __init__(self, value):
        self.value = value

num = 10

我希望行num = 10的行为就像num = newInteger(10)一样。感谢任何可以帮助我的人。

2 个答案:

答案 0 :(得分:2)

您可以运行与主程序并行的小线程,将所有创建的整数替换为newInteger

import threading
import time

class newInteger(int):
    def __init__(self, value):
        self.value = value

    def __str__(self):
        return "newInteger " + str(self.value)

def replace_int():
    while True:
        g = list(globals().items())
        for n, v in g:
            if type(v) == int:
                globals()[n] = newInteger(v)

threading.Thread(target=replace_int, daemon=True).start()
num = 10
time.sleep(1)
print(num)

但这是unpythonic,并且很难调试。您应该使用显式转化like @johnashu proposed

答案 1 :(得分:0)

我不确定这是不是你的意思,但如果你把班级分配给一个变量。那么它将是该类的一个实例..

示例:

class newInteger(int):
    def __init__(self, value):
        self.value = value

num = 10

if num == 10:
    num = newInteger(10)

打印:     hello