gpt4 book ai didi

python - 为什么 python str.format 不调用 str()

转载 作者:太空狗 更新时间:2023-10-30 02:45:39 24 4
gpt4 key购买 nike

我有以下类(class)

class A(object):
def __unicode__(self):
return u'A'

def __str__(self):
return 'AA'

>>> u"{}".format(A())
u'A'
>>> "{}".format(A())
'AA'
>>> str(A())
'AA'

根据documentation ,

"Harold's a clever {0!s}" # Calls str() on the argument first

为什么这仍然返回 u'A' 而不是 u'AA'??

>>> u"{0!s}".format(A())
u'A'

我希望它是一样的

>>> u"{}".format(str(A()))
u'AA'

最佳答案

我认为这是一个(次要的)文档错误。如果您在格式字符串中传递 !s 代码,则 str.format 调用 str,但 unicode.format 调用unicode 代替。

这些文档可能是用 Python 3 编写的,其中所有字符串都是 Unicode 并且 !s 总是调用 str。整个新的格式化系统从 Python 3.0 反向移植到 Python 2.6,文档中出现一些含糊不清之处并不令人震惊。

关于python - 为什么 python str.format 不调用 str(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23773816/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com