您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

Python TypeError:传递给对象的非空格式字符串。__format__

Python TypeError:传递给对象的非空格式字符串。__format__

bytes对象没有自己的__format__方法,因此使用认的from object

>>> bytes.__format__ is object.__format__
True
>>> '{:20}'.format(object())
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: non-empty format string passed to object.__format__

这只是意味着您不能在这些格式上使用简单,无格式,未对齐的格式。显式转换为字符串对象(就像通过解码bytes到一样str)以获取格式规范支持

您可以使用!s字符串转换使转换明确:

>>> '{!s:20s}'.format(b"Hi")
"b'Hi'               "
>>> '{!s:20s}'.format(object())
'<object object at 0x1100b9080>'

object.__format__明确拒绝格式字符串,以避免隐式字符串转换,特别是因为格式设置指令是特定于类型的。

python 2022/1/1 18:35:37 有283人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶