我不完全明白这里发生了什么。为什么从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
您还需要定义一个__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