gpt4 book ai didi

python - 创建一个在 Python 中打印整数的装饰器

转载 作者:太空宇宙 更新时间:2023-11-03 14:20:19 26 4
gpt4 key购买 nike

我想创建一个在数字上打印单位的装饰器。

money = 10
print(money)

结果为“10 美元”

money = 1
print(money)

结果为“1 美元”

我知道我需要包装 money.__str__(),但我不确定如何使用装饰器来完成此操作。

我走的路正确吗?以下可以以某种方式成为装饰器吗?

def str_cur(money):
if money == 1 or money == -1:
return f"{money} dollar"
else
return f"{money} dollars"

最佳答案

Python 中的装饰器适用于函数(更罕见的是类),而不是变量。所以我认为研究它们的语法对你没有帮助。

听起来你也许可以通过为你的钱创建一个包含整数的类来完成你想做的事情。您的类可以有一个 __str__ 方法,其中包含货币名称和数字:

class Dollars(int):
def __str__(self):
if abs(self) == 1:
return f"{self} dollar"
else
return f"{self} dollars"

现在你可以这样做:

money = Dollars(10)
print(money) # prints "10 dollars"

我上面写的Dollar类继承自int,所以你可以对它进行所有正常的数值运算,但你经常会得到一个正常的int 对象返回,而不是另一个 Dollar 实例。如果您只想拿回美元,则需要编写自己版本的数字方法,唉,这相当乏味(您可能希望停止从 int 继承,而只需要一个整数属性)。如果您只需要支持有限数量的数字选项(例如相互加减美元金额以及乘以和除以整数),那可能还不错。

关于python - 创建一个在 Python 中打印整数的装饰器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47983293/

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