Python: format __format__

 

__format__ 在format(object,format_spec:str), f-string, ''.format()生效

 

format_spec

[[fill]align][sign][#][0][minimumwidth][.precision][type]

 

 

class Superfluous:
    def __format__(self, format_spec):
        print(f'__format__ format_spec: {format_spec}, format_spec == "": {format_spec == ""}')
        # return super(Superfluous, self).__format__(format_spec)
        return str.format(f'{{:{format_spec}}}', str(self))

    def __str__(self):
        print('__str__')
        return 'superfluous'


b = Superfluous()

print(format(b, '#^20'))
print('~' * 80)
print(b.__format__('#^20s'))
print('~' * 80)
print(object.__format__(b, ''))
print('~' * 80)
print(str(b))
print('~' * 80)
# print(object.__format__(b))
print(f'{b}')
print('~' * 80)
print(len(f'{b}'))
print('~' * 80)
print(f'{b!r}')
print('~' * 80)

print(str.format('>> {:>20}', b))

 

posted @ 2022-10-12 10:22  ascertain  阅读(32)  评论(0)    收藏  举报