gpt4 book ai didi

python - 内置不可变类型的子类友好版本?

转载 作者:行者123 更新时间:2023-11-28 19:23:23 27 4
gpt4 key购买 nike

当您只想使用内置类型时,这是很常见的情况仅具有不同的字符串表示形式。例如,考虑一个变量来存储时间测量值。通常你想要一个行为的类型完全像 int 或 float 的所有意图和目的,除了当强制转换为字符串会生成格式为 HH:MM:SS 或类似格式的字符串。

应该很容易。不幸的是以下不起作用

class ElapsedTime(float):
def __str__(self):
return 'XXX'

因为操作的结果将是 float 类型。这我知道的解决方案是重写几十个方法,但这是最不切实际的。我不敢相信没有其他办法。为什么没有标准库中的子类友好 UserInt、UserFloat 类型旨在在这些情况下使用?

最佳答案

In [1]: class float2(float):
...: def __init__(cls,val):
...: return float.__init__(cls,val)
...: def __str__(cls):
...: return str(cls.real).replace(".",":")
...: def __add__(cls,other):
...: return float2(cls.real + other.real)
...: ## similarly implement other methods...
...:

In [2]: float2(20.4)
Out[2]: 20.4

In [3]: print float2(20.4)
20:4

In [4]: x = float2(20.4) + float2(10.1)

In [5]: x
Out[5]: 30.5

In [6]: print x
30:5

In [7]: x = float2(20.4) + float(10.1)

In [8]: x
Out[8]: 30.5

In [9]: print x
30:5

这是否解决了您的问题?

关于python - 内置不可变类型的子类友好版本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19345073/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com