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))


浙公网安备 33010602011771号