我不完全明白這里發生了什么。為什么從 repr 回傳的字串評估為 False?如果有人可以擴展我在這里不理解的內容,那將不勝感激。
class Bag(object):
def __init__(self, iter_vals = []):
self.iter_vals = iter_vals
def __repr__(self):
return f"Bag({str(self.iter_vals)})"
if __name__ == '__main__':
b = Bag(['d','a','b','d','c','b','d'])
print(eval(repr(b)) == b)
>>> False
uj5u.com熱心網友回復:
您還需要定義一個__eq__方法來定義如何一Bag等于另一個Bag:
class Bag(object):
def __init__(self, iter_vals = []):
self.iter_vals = iter_vals
def __repr__(self):
return f"Bag({str(self.iter_vals)})"
def __eq__(self, other):
if not isinstance(other,Bag):
raise TypeError('not a Bag')
return self.iter_vals == other.iter_vals
if __name__ == '__main__':
b = Bag(['d','a','b','d','c','b','d'])
print(eval(repr(b)) == b) # True
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/334150.html
上一篇:如何將Binder與包含Git-lfs檔案的GitHub存盤庫一起使用?
下一篇:Flutter類屬性(基礎)
