python:自定义对象的打印
来源:互联网 发布:wows更新数据出错 编辑:程序博客网 时间:2024/06/05 08:12
- 在
python
中,如果不重写自定义对象的__str__
方法,打印出来的对象是一串类似于<__main__.Bean object at 0x1007da470>
的字符串。这当然不是我们想要的结果。 于是:通过对
__str__
方法的重写,就可以返回我们想要的数据的展示。但是,一个新的问题出现了。以后,如果要修改这个类的属性,那么要想正确的显示对象的属性。还得修改
__str__
方法。有没有办法可以做到动态显示所有的属性呢?
当然是有的。通过对对象的属性的收集,就可以实现动态的打印全部的属性。而且,更方便的是,我们可以将这种方法做成一个工具类。以后,自定义只需要继承该类,就可以实现对象的属性的完成打印了。ps:Python是支持多继承的,所以,继承该类实现格式化打印,并不影响原有逻辑。
- 看如下代码是如何实现对类属性的动态收集并打印的。
class AttrDisplay: def gatherAttrs(self): return ",".join("{}={}" .format(k, getattr(self, k)) for k in self.__dict__.keys()) # attrs = [] # for k in self.__dict__.keys(): # item = "{}={}".format(k, getattr(self, k)) # attrs.append(item) # return attrs # for k in self.__dict__.keys(): # attrs.append(str(k) + "=" + str(self.__dict__[k])) # return ",".join(attrs) if len(attrs) else 'no attr' def __str__(self): return "[{}:{}]".format(self.__class__.__name__, self.gatherAttrs())
- OK,似乎所有的工作都已经完成了,来简单测试一下吧:
class Bean(AttrDisplay): def __init__(self, id=1024, name='Jack Chen', job='Actor'): self.id = id self.name = name self.job = job def doSomething(self): return self.name + " doing something now ..."if __name__ == '__main__': bob = Bean() print(bob)# [Bean:id=1024,name=Jack Chen,job=Actor]
- 嗯,测试结果似乎和我们预期的一致。所以,这样就实现对自定义对象的打印。~
- 以上
参考资料:《Learning Python》
ps:
AttrDisplay
也是来自于《Learing Python》
阅读全文
0 0
- python:自定义对象的打印
- python3 自定义对象的打印
- NSLog打印自定义对象
- python打印对象属性
- python 打印出所有的对象/模块的属性 方法
- Python 中的var_dump, 对象打印
- Python学习:自定义对象
- 自定义的打印宏
- python中自定义类对象json字符串化的方法
- python--用户自定义类对象作为dict的key
- 单据的自定义纸张打印
- Windows自定义打印的实现
- 打印对象的通用方法
- js打印对象的方法
- 打印InputStream对象的值
- java 打印对象的原理
- Python长字符串的打印
- python 类的打印__str__
- CRC循环冗余校验
- C++智能指针设计
- 验证码-PHP,AJAX
- 欢迎使用CSDN-markdown编辑器
- 微服务架构的优势与不足
- python:自定义对象的打印
- java实现读取文件底下所有子文件名,并修改文件名
- tftp使用
- 微服务架构中的进程间通信
- KMP算法next数组计算--字符串方式
- 如何发布Web项目到互联网
- Stack Overflow 2017 开发者调查报告(程序员必看)
- centos安装docker
- Flex 布局教程:语法篇