通过format()
函数和字符串方法使得一个对象能支持自定义的格式化。
为了自定义字符串的格式化,我们需要在类上面定义__format__()
方法。例如:
_formats = {'ymd' : '{d.year}-{d.month}-{d.day}','mdy' : '{d.month}/{d.day}/{d.year}','dmy' : '{d.day}/{d.month}/{d.year}'}class Date:def __init__(self, year, month, day):self.year = yearself.month = monthself.day = daydef __format__(self, code):if code == '':code = 'ymd'fmt = _formats[code]return fmt.format(d=self)
现在Date
类的实例可以支持格式化操作了,如同下面这样:
>>> d = Date(, 12, 21)>>> format(d)'-12-21'>>> format(d, 'mdy')'12/21/'>>> 'The date is {:ymd}'.format(d)'The date is -12-21'>>> 'The date is {:mdy}'.format(d)'The date is 12/21/'
__format__()
方法给Python的字符串格式化功能提供了一个钩子。 这里需要着重强调的是格式化代码的解析工作完全由类自己决定。因此,格式化代码可以是任何值。 例如,参考下面来自datetime
模块中的代码:
>>> from datetime import date>>> d = date(, 12, 21)>>> format(d)'-12-21'>>> format(d,'%A, %B %d, %Y')'Friday, December 21, '>>> 'The end is {:%d %b %Y}. Goodbye'.format(d)'The end is 21 Dec . Goodbye'
如果觉得《Python实战从入门到精通第十九讲——自定义字符串的格式化》对你有帮助,请点赞、收藏,并留下你的观点哦!