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

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

相关推荐
2301_8135995516 分钟前
HTML图片怎么用UnoCSS对齐_UnoCSS原子化CSS图片对齐实战
jvm·数据库·python
m0_3776182319 分钟前
c++怎么在不加载整个大文件的情况下获取其SHA256校验值【进阶】
jvm·数据库·python
LN花开富贵21 分钟前
【ROS】鱼香ROS2学习笔记二
linux·笔记·python·学习·嵌入式
qq_1898070325 分钟前
CSS如何实现纯CSS树状目录结构_利用-checked与递归思维构建交互节点
jvm·数据库·python
Micr06726 分钟前
利用Werkzeug-Debug实现本地权限提升
python·web安全·网络安全
leaves falling28 分钟前
C++模板进阶
开发语言·c++
yanghuashuiyue42 分钟前
langchain AI应用框架研究【开发部署-篇四】
python·langchain
无敌昊哥战神44 分钟前
【保姆级题解】力扣17. 电话号码的字母组合 (回溯算法经典入门) | Python/C/C++多语言详解
c语言·c++·python·算法·leetcode
2301_777599371 小时前
Go语言如何做HTTP连接池_Go语言HTTP连接池教程【最新】
jvm·数据库·python
坐吃山猪1 小时前
Python27_协程游戏理解
开发语言·python·游戏