使用 class 属性作为参数的 f-string 浮点格式

Float formatting with f-string using a class attribute as parameter

是否可以这样做?

class P():
    def __init__(self):
        self.digits = 5
        self.pi = f"{np.pi:eval(self.digits)f}"

test = Test()
test.pi

我知道 f"{np.pi:5.f}" 可以,但是可以用 class 的属性来实现吗?像动态的方式?它不需要使用 eval(),重要的部分是如果 self.digits 可以以某种方式使用。

您可以在格式说明符中嵌套格式

以你的例子为例并修复一些问题(缺少导入,不必要的 numpy,class 名称不匹配,打印变量而不是仅仅访问它,在数字前面加点以限制小数位):

import math

class Test():
    def __init__(self):
        self.digits = 5
        self.pi = f"{math.pi:.{self.digits}f}"

test = Test()
print(test.pi)

输出:

$ python3 t.py 
3.14159