2015-10-15 63 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