python 通用repr方法的重写方式以及 class的__dict__ 作用

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__作用

用于获取当前类下的所有属性的字典值,以此来完成成员属性的遍历

相关推荐
草莓火锅1 小时前
用c++使输入的数字各个位上数字反转得到一个新数
开发语言·c++·算法
j_xxx404_1 小时前
C++ STL:阅读list源码|list类模拟|优化构造|优化const迭代器|优化迭代器模板|附源码
开发语言·c++
DreamNotOver1 小时前
批量转换论文正文引用为上标
开发语言·论文上标
散峰而望1 小时前
C/C++输入输出初级(一) (算法竞赛)
c语言·开发语言·c++·算法·github
fie88891 小时前
基于MATLAB的狼群算法实现
开发语言·算法·matlab
gihigo19981 小时前
MATLAB中生成混淆矩阵
开发语言·matlab·矩阵
dreams_dream2 小时前
Flask
后端·python·flask
曾几何时`2 小时前
C++——this指针
开发语言·c++
小冯的编程学习之路2 小时前
【C++】: C++基于微服务的即时通讯系统(1)
开发语言·c++·微服务
mywpython2 小时前
用Python和Websockets库构建一个高性能、低延迟的实时消息推送服务
python·websocket