有没有一种简洁的方式来控制
作为一个天真的例子,考虑下面的
yaml.dump
输出数字的精度?比如说,我有一个类,其中包含不同复杂度的变量,其中一些是双精度浮点数,我希望它们四舍五入到第四位。这个yaml
输出仅用于显示;它不会被加载(即不会使用yaml.load
)。作为一个天真的例子,考虑下面的
A
类:import yaml
class A:
def __init__(self):
self.a = 1/7
self.b = 'some text'
self.c = [1/11, 1/13, 1/17, 'some more text']
def __repr__(self):
return yaml.dump(self)
A()
带有输出
!!python/object:__main__.A
a: 0.14285714285714285
b: some text
c: [0.09090909090909091, 0.07692307692307693, 0.058823529411764705, some more text]
和期望输出:
!!python/object:__main__.A
a: 0.1429
b: some text
c: [0.0909, 0.0769, 0.0588, some more text]
我想这可以通过yaml.representative
以一些简洁的方式来完成。
我希望避免使用字符串输出的舍入,因为实际的类结构可能更加复杂(递归等)。
round(number, precision)
? - Y2Hfloat
,array.float
)并在连接到“dump”输出之前将它们舍入。这有意义吗? - Oleg Melnikovround(number, precision)
。要么这样,要么你需要定义另一个条件来设置precision
参数,但由于我不完全理解你试图做什么,所以无法告诉你如何定义那个条件。 - Y2Hround(a,4)
,round(b,4)
等,因为变量可能会改变。这个类的另一个实例有变量x
,y
。我认为可以通过representative
方法将舍入合并到dump
本身中。这样清楚吗? - Oleg Melnikov