repr 方法的意义
相当于 Java 中对对象的构造,toString 方法,可以格式化的输出当前对象内的所有属性以及属性对应的值,但不同的是 repr 要求尽可能输出的字符串结果要可以被 eval() 函数直接解析并执行成功从而还原此对象,主要也是用于辅助理解代码,但并不强制要求满足此要求,主要是还是用于理解某一个对象的定义。
通用的重写方法
python
def __repr__(self) -> str:
class_name = self.__class__.__name__
attrs_repr = ',\n\t'.join(f"{attr_name}={repr(value)}"
for attr_name, value in self.__dict__.items()
if attr_name not in ['_internal_attr', '_private_attr'] # 可选:排除某些属性
and not callable(value)) # 可选:排除方法
return f"{class_name}(\n\t{attrs_repr}\n)"
这里的格式化字符可以自行调整 注意,这里我排除了某些属性,如果也需要可以去除如下限制
python
if attr_name not in ['_internal_attr', '_private_attr'] # 可选:排除某些属性
上面class的__dict__作用
用于获取当前类下的所有属性的字典值,以此来完成成员属性的遍历