Python中类的__repr__和__str__方法还挺容易让人产生困惑的。总结了一下,有以下几点值得注意
__repr__被implement了,而__str__没有,那么后者等于前者。__str__,但如果在字典里面,则会调用__repr__方法。可看如下代码。import dataclasses
@dataclasses.dataclass
class Car:
wheels: int
def __repr__(self):
return f"repr is {self.wheels}"
def __str__(self):
return f"str is {self.wheels}"
c = Car(5)
print(c)
dct = {1: c}
print(dct)
第一次打印是调用了__str__方法,而第二次是调用了__repr__方法。