开发者社区> 问答> 正文

自定义字符串的格式化

你想通过 format() 函数和字符串方法使得一个对象能支持自定义的格式化。

展开
收起
哦哦喔 2020-04-17 15:00:17 830 0
1 条回答
写回答
取消 提交回答
  • 为了自定义字符串的格式化,我们需要在类上面定义 __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 = year
            self.month = month
            self.day = day
    
        def __format__(self, code):
            if code == '':
                code = 'ymd'
            fmt = _formats[code]
            return fmt.format(d=self)
    现在 Date 类的实例可以支持格式化操作了,如同下面这样:
    
    >>> d = Date(2012, 12, 21)
    >>> format(d)
    '2012-12-21'
    >>> format(d, 'mdy')
    '12/21/2012'
    >>> 'The date is {:ymd}'.format(d)
    'The date is 2012-12-21'
    >>> 'The date is {:mdy}'.format(d)
    'The date is 12/21/2012'
    >>>
    
    2020-04-17 15:00:30
    赞同 展开评论 打赏
问答地址:
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载