断言 menu.__str__() == " "断言错误



当我尝试断言"(空字符串)转换为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()


由于声明是def __str__(self):,您需要像

那样调用它
assert menu.__str__() == ""

或使用str

assert str(menu) == ""

你也有一个for循环,包括在同一个a_list上的另一个循环。一个好的实现是

# with classic for loop syntax
def __str__(self):
result = ""
for counter, element in enumerate(self.a_list, 1):
result += f"{counter}. {element}n"
return result

# with generator syntax
def __str__(self):
return "n".join(f"{c}. {elem}" for c, elem in enumerate(self.a_list, 1))

如果在断言之前没有向对象添加任何内容,则__str__()函数不会返回字符串。即使函数被正确调用,也会产生一个断言错误。