gpt4 book ai didi

python - 在 __str__ 下调用 print(self) 会抛出 RecursionError

转载 作者:行者123 更新时间:2023-11-28 20:01:00 26 4
gpt4 key购买 nike

我定义了一个名为 spam 的类:

class spam():
def __str__(self):
print(self)
a = spam()

print(a)

最后的打印语句给我以下错误:

    Traceback (most recent call last):
File "<pyshell#73>", line 1, in <module>
print(a)
File "<pyshell#51>", line 3, in __str__
print(self)
File "<pyshell#51>", line 3, in __str__
print(self)
File "<pyshell#51>", line 3, in __str__
print(self)
#same lines repeated several times
RecursionError: maximum recursion depth exceeded

这是怎么回事?当我在 str(self) 下说 print(self) 时会发生什么?是什么导致了递归?

最佳答案

print 在非字符串对象上调用 str 以便能够打印它,这会调用您的 __str__ 成员方法。

这是你的递归。

当您能够将对象转换为“等效”字符串时,您定义了一个__str__ 方法。如果不是,则保留默认值(打印对象类型和地址)

注意 __str__ 应该返回一些东西,而不是打印。如果你有一些代表性的属性,你可以用它来返回一些有趣的东西。

class spam():
def __init__(self,value):
self.__value = value
def __str__(self):
return "object '{}' with value {}".format(self.__class__.__name__, self.__value)

a = spam(10)
print(a)

打印:

object 'spam' with value 10

关于python - 在 __str__ 下调用 print(self) 会抛出 RecursionError,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52691996/

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