#python-3.x #string-formatting #f-string
#python-3.x #форматирование строки #f-строка
Вопрос:
Возможно ли сделать что-то подобное?
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}"
это работает, но возможно ли это сделать с атрибутом класса? Как в динамическом режиме? Его не нужно использовать eval()
, важная часть — это если self.digits
можно каким-то образом использовать.
Ответ №1:
вы можете вкладывать форматы внутри спецификатора формата
взяв ваш пример и исправив несколько вещей (отсутствующий импорт, ненужный numpy
, несоответствие имени класса, выведите переменную вместо простого доступа к ней, поставьте точку перед числом, чтобы ограничить десятичные разряды):
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
Комментарии:
1. Спасибо @Anthony Sottile, это было то, что я искал 🙂