Python中的字符串对象表示

Python中的字符串对象表示,python,python-3.x,Python,Python 3.x,python中的\uuu str\uuu()和str()方法之间有什么区别?\uu str\uuuu(通常为dunder,例如double-under)是一个实例方法,在运行str()时调用该方法并返回对象的字符串表示形式 str(foo)充当试图将foo转换为字符串的函数 注意: 还有一种\uuuuu repr\uuuuuu()方法与\uuu str\uuuuuu()非常类似,主要区别在于\uuuuuu repr\uuuuuuu应该返回一个明确的字符串,而\uuuuuuuu str\uuuuu

python中的
\uuu str\uuu()
str()
方法之间有什么区别?

\uu str\uuuu
(通常为dunder,例如double-under)是一个实例方法,在运行
str()
时调用该方法并返回对象的字符串表示形式

str(foo)
充当试图将
foo
转换为字符串的函数

注意:
还有一种
\uuuuu repr\uuuuuu()
方法与
\uuu str\uuuuuu()
非常类似,主要区别在于
\uuuuuu repr\uuuuuuu
应该返回一个明确的字符串,而
\uuuuuuuu str\uuuuuuuuu>
用于可读字符串。对于这两种方法之间的差异,我建议大家读一读。

\uuuu str\uuuu()
是一种神奇的实例方法,它可以做到这一点:当您使用
print()
打印类实例变量时,它将为您提供一个字符串,您可以通过在
\uu str\uuu()
方法中更改返回的字符串来修改该字符串。可能有更好的解释,但我可以用代码向您展示:

class Thing:
    def __init__(self):
        pass
    def __str__(self):
       return "What do you want?"  #always use return

a = Thing()
print(a)
输出:

What do you want?
'12.0'
str()
只是将变量转换为字符串类型的变量

print(str(12.0))
输出:

What do you want?
'12.0'
您可以使用
type()
函数确认它是一个字符串

print(type(str(12.)))

我不知道它的确切输出,但人们可能会在它里面有
'str'

检查这个。从某种意义上看,
str==operator.methodcaller(“\uu str\uuu”)
定义了两者之间的关系。@Jerrybibo不太清楚
str
是一种类型<代码>\uuuu str\uuuu是一种实例方法。很好@切普纳:我需要温习一下我的术语。