當我嘗試將“”(空字串)斷言到 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.a_list, 1))
print()
uj5u.com熱心網友回復:
由于宣告是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))
uj5u.com熱心網友回復:
__str__()如果在斷言之前沒有向物件添加任何內容,則您的函式不會回傳字串。即使函式被正確呼叫,也會產生斷言錯誤。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/336782.html
下一篇:如何將類重寫為普通物件?
