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

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

相关推荐
zhangrelay19 小时前
三分钟云课实践速通--线性代数--python版--矩阵
linux·笔记·python·学习·线性代数·ubuntu·矩阵
琪露诺大湿19 小时前
VeloQueue-测试报告
java·开发语言·消息队列·单元测试·项目·测试报告
minji...19 小时前
Linux 网络套接字编程(四)支持多客户端同时在线、消息能转发给所有人的 UDP 聊天室服务器
linux·运维·开发语言·网络·c++·算法·udp
2401_8714928519 小时前
SQL如何实现按自定义排序进行分组汇总_ORDERBY与聚合函数
jvm·数据库·python
XS03010619 小时前
Java 基础(十一)反射
java·开发语言
t***54419 小时前
Dev-C++中使用Clang调试有哪些常见错误
java·开发语言·c++
qq_3300379919 小时前
如何清洗SQL输入数据_使用框架内置的ORM处理数据交互
jvm·数据库·python
ydmy19 小时前
强化学习/对齐(个人理解)
开发语言·python
一叶之秋141219 小时前
哈希密钥:解锁unordered容器的极速潜能
开发语言·c++·哈希算法