2015-10-15 62 views
2

有什么方法可以改变Formatter python的string.format()的用法?我有一个自定义的(禁用check_unused_args方法),但这需要我使用formatter.format("text")语法,而不是我喜欢的"text".format()语法。如何覆盖python中的默认字符串格式化程序?

我可以换出默认格式化程序吗?

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

+0

您可以从内置函数中派生自己的字符串类,并提供自己的'format'方法。 – martineau

+0

另请参阅:https://pyformat.info/ – dreftymac

回答

3

有什么方法可以改变格式器python的string.format()使用?

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


但是可以,明确告诉您要使用不同的格式蟒蛇。

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,它可以使您的自定义格式的工作更好的访问。

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

+0

Aww,太糟糕了。尽管我看到了推理。这是我一直在使用的解决方案。 – AlphaModder

+0

与其他语言(例如Ruby)不同,Python通常不允许您修改内置类型(例如字符串)。我个人认为这是一件好事 - 它迫使你明确。但是,其他人当然可能不同意。 :-) – mgilson