【发布时间】:2021-12-11 04:43:51
【问题描述】:
当我尝试将“”(空字符串)断言到 str 函数时出现断言错误。谁能告诉我为什么会发生这种情况。这里完全没有头绪。我知道 str 函数需要返回一个字符串,但据我所知,它在我运行时返回一个字符串:
运行时出现错误:
menu = Menu()
assert menu.str() == ""
这是我的代码:
class Node:
def __init__(self):
self.counter = counter
my_list = []
self.my_list = my_list
def __str__(self):
for element in self.a_list:
if element:
return "\n".join(f"{counter}. {element}" for counter,
element in enumerate(self.my_list, 1))
print()
【问题讨论】:
-
x.str()与str(x)不同,后者调用x.__str__() -
我想你想要
assert str(menu)=="",但即使这样也是无效的。如果您的对象为空,您的__str__函数将返回 None,而不是空字符串。也许assert not menu.str()会更好。 -
另外,你应该调试你的代码。当你真的
print(repr(menu.str()))时会发生什么?是空字符串吗? -
嗯,它返回属性错误
-
什么是完整的属性错误信息?它是否说“没有属性'str'”?您的示例中没有
str方法,您的assert menu.str() == ""应该以同样的方式失败。