python - 分配时如何用不同的类替换整数

标签 python

我有一个名为 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/

相关文章:

python - Ruby 如何比 Python 更面向对象?

python - pandas - 为什么不能使用 DataFrame.apply 设置某些列 Categorical

python - 从 Curl 输出中解析 XML

Python:确定列表的所有项目是否都是同一个项目

python - Pyparsing:尝试非贪婪导致无限循环

python - 利用 python 对可变数据结构(如列表)的传递共享是否符合习惯?

Python优化

python - Apple Mail.app 使用插件设置 HTML 签名

python - 使用值预填充 wtforms 文本字段

python - 如何在 Python 中编写位长度不是 8 的倍数的二进制文件?