gpt4 book ai didi

python - python 中的 __str__ 方法

转载 作者:太空宇宙 更新时间:2023-11-04 09:00:58 26 4
gpt4 key购买 nike

我想知道为什么 python 魔术方法 (str) 总是寻找返回语句而不是打印方法?

class test:

def __init__(self):
print("constructor called")

def __call__(self):
print("callable")

def __str__(self):
return "string method"



obj=test() ## print constructor called


obj() ### print callable


print(obj) ## print string method

我的问题是为什么我不能在 str 方法中使用这样的东西

 def __str__(self):
print("string method")

最佳答案

这更多是为了能够将对象转换为 str - 你的用户不需要在他们想要做类似的事情时将所有这些东西打印到终端中

text = str(obj_instance)

他们希望 text 包含结果,而不是打印到终端上。

按你的方式做,代码实际上就是这样

text = print(obj_instance)

这有点荒谬,因为打印的结果通常没有用,而且 text 不会包含传递到 str 类型的文本流。

正如您已经评论过的(但已被删除),不为返回值提供正确的类型将导致引发异常,例如:

>>> class C(object):
... def __str__(self):
... return None
...
>>> str(C())
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: __str__ returned non-string (type NoneType)
>>>

关于python - python 中的 __str__ 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25518623/

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