如何在python中覆盖默认的字符串格式化程序?

时间:2015-10-15 23:00:11

标签: python string formatting

我是否可以通过某种方式更改Formatter python的string.format()用途?我有一个自定义的(禁用check_unused_args方法),但这需要我使用formatter.format("text")语法,而不是我更喜欢的"text".format()语法。

我可以以某种方式换掉'默认格式化程序'吗?

注意:这只是一个小项目,我不需要担心搞乱库或任何东西。

1 个答案:

答案 0 :(得分:5)

  

有什么方法可以改变Formatter python的string.format()使用吗?

没有。我认为理性是因为它会导致真正令人困惑的代码。人们会期望format_string.format(...)表现出一种方式,并且它会表现出不同的行为,导致错误和普遍的悲伤。

可以然而,明确告诉python你想要使用不同的格式化程序。

class MyFormatter(string.Formatter):
    """This is my formatter which is better than the standard one."""
    # customization here ...

MyFormatter().format(format_string, *args, **kwargs)

通过继承string.Formatter,您可以访问整个Formatter API,这可以使您的自定义格式化程序更好地工作。

如果这还不够,您可以使用__format__对象调用的Formatter挂钩方法(包括标准对象)自定义对象如何格式化自己。