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

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

num = 10

我希望 num = 10 行表现得好像它是 num = newInteger(10) 。感谢任何可以帮助我的人。

最佳答案

您可以运行一个与主程序并行的小线程,将所有创建的整数替换为 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)

但这不是pythonic,并且很难调试。您应该只使用显式转换 like @johnashu proposed

关于python - 分配时如何用不同的类替换整数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/50305739/

10-10 16:41