当我尝试断言"(空字符串)转换为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__()
函数不会返回字符串。即使函数被正确调用,也会产生一个断言错误。