标签分类 技术文章:
当前位置:首页 > Python技术文章 > python 打印出所有的对象/模块的属性(实例代码)

python打印出所有的对象/模块的属性代码详解

  • 发布时间:
  • 作者:码农之家原创
  • 点击:196

这篇文章主要知识点是关于python、打印对象、python 自定义对象的打印方法 的内容,如果大家想对相关知识点有系统深入的学习,可以参阅以下电子书

Python程序设计入门到实战
  • 类型:Python大小:423.1 MB格式:PDF出版:清华大学出版社作者:何敏煌
立即下载

更多Python相关的学习资源可以参阅 Python电子书程序设计电子书 等栏目。

python 打印出所有的对象/模块的属性(实例代码)

实例如下:

import sys

def print_all(module_):
  modulelist = dir(module_)
  length = len(modulelist)
  for i in range(0,length,1):
    print getattr(module_,modulelist[i])

print_all(sys) 

以上这篇python 打印出所有的对象/模块的属性(实例代码)就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持码农之家。

python 自定义对象的打印方法

在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]

嗯,测试结果似乎和我们预期的一致。所以,这样就实现对自定义对象的打印。

以上这篇python 自定义对象的打印方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持码农之家。

以上就是本次给大家分享的关于Python的全部知识点内容总结,大家还可以在下方相关文章里找到如何由java转学python、 python ddt数据驱动实例代码、 python测试opencv时imread导致、 等python文章进一步学习,感谢大家的阅读和支持。

上一篇:python import引入不同路径下的模块用法

下一篇:Python中的命令行参数解析工具docopt用法知识点

展开 +

收起 -

学习笔记
网友NO.783679

python 以16进制打印输出的方法

打印整数16进制 num=10print('%#x'%num) 打印字符串中的16进制 arr='12342535'for i in arr:print('%#x'%ord(i)) 以上这篇python 以16进制打印输出的方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持码农之家。 ……

网友NO.886868

Python3内置模块pprint让打印比print更美观详解

概述 在我们使用内置打印函数print时,打印出的Python数据结构对象总是一行的输出的方式,这样对数据结构较复杂或数据较多的对象的显示并不美观,这时我们可以利用pprint输出美化数据结构对象。 pprint方法概览 美化输出 我们可以利用pprint中的PrettyPrinter控制输出的打印时的缩进,行宽、甚至打印深度等,定义类如下 class pprint.PrettyPrinter(indent = 1,width = 80,depth = None,stream = None,*,compact = False ) indent 缩进 width 宽度 depth 打印深度 stream 指输出流对象,stream = None输出流对象默认是sys.stdout compact 如果compact为false(默认值),则长序列中的每个项目将在单独的行上进行格式化。如果compact为true,则将在每个输出行上格式化适合宽度的项目。 import pprintL = [str(i)*20 for i in range(10)]pp = pprint.PrettyPrinter(indent=4)pp.pprint(L)print(L) 示例结果: [ '00000000000000000000', '11111111111111111111', '22222222222222222222', '33333333333333333333', '44444444444444444444', '55555555555555555555', '66666666666666666666', '77777777777777777777', '88888888888888888888', '99999999999999999999'] ['00000000000000000000', '11111111111111111111', '22222222222222222222', '33333333333333333333', '44444444444444444444', '55555555555555555555', '66666666666666666666', '77777777777777777777', '88888888888888888888', '99999999999999999999'] 对象字符串 我们也可以将目标对象……

网友NO.284954

用python打印菱形的实操方法和代码

python怎么打印菱形?下面给大家带来三种方法: 第一种 rows = int(input('请输入菱形边长:\n'))row = 1while row = rows: col = 1 # 保证每次内循环col都从1开始,打印前面空格的个数 while col = (rows-row): # 这个内层while就是单纯打印空格 print(' ', end='') # 空格的打印不换行 col += 1 print(row * '* ') # 每一行打印完空格后,接着在同一行打印星星,星星个数与行数相等,且打印完星星后print默认换行 row += 1 bottom = rows-1while bottom 0: col = 1 # 保证每次内循环col都从1开始,打印前面空格的个数 while bottom+col = rows: print(' ', end='') # 空格的打印不换行 col += 1 print(bottom * '* ') # 每一行打印完空格后,接着在同一行打印星星,星星个数与行数相等,且打印完星星后print默认换行 bottom -= 1 输出结果: 请输入菱形边长:5 * * * * * * * * * * * * * * * * * * * * * * * * * 第二种 s = '*'for i in range(1, 8, 2): print((s * i).center(7))for i in reversed(range(1, 6, 2)): print((s * i).center(7)) 输出结果: * *** ***** ******* ***** *** * 第三种 def stars(n): RANGE1 = [2*i+1 for i in range(n)] RANGE2 = [2*i+1 for i in range(n)[::-1]][1:] RANGE = RANGE1 + RANGE2 RANGE_1 = [i for i in range(n)[::-1]] RANGE_2 = [i for i in range(n)[1:]] RANGE_12 = RANGE_1 + RANGE_2 for i in range(len(RANGE)): print (' '*RANGE_12[i] + '*'*RANGE[i])if __name__ == "__main__": stars(5) 输出结果: * *** ***** *********……

网友NO.176986

python中while循环打印星星的四种形状

在控制台连续输出五行*,每一行星号数量一次递增【推荐阅读:Python视频教程】 * ** *** **** ***** #1.定义一个行计数器row = 1while row = 5: #定义一个列计数器 col = 1 #开始循环 while col = row: print('*',end='') col += 1 print('') row += 1 #1.定义一个行计数器row = 1while row = 5: #定义一个列计数器 col = 5 #开始循环 while col = row: print('*',end='') col -= 1 print('') row += 1 那么如果想让空格先,然后*呢 row = 1while row = 5: # 行数,循环五次 a = 1 col = 1 while a = 5 - row: # a控制每行的空格数=5-行数,例如:第一行为5-1=4个空格 print(' ', end='') # 不换行 a += 1 while col = row: # col控制*的数量=行数 print('*', end='') col += 1 print() row += 1 另外一种排列方式 row = 1while row = 5: # 行数,循环五次 a = 1 col = 1 while a = row - 1: # a控制每行的空格数=5-行数,例如:第一行为5-1=4个空格 print(' ', end='') # 不换行 a += 1 while col = 6-row: # col控制*的数量=行数 print('*', end='') col += 1 print() row += 1 以上就是python中while循环打印星星的四种形状的详细内容,更多请关注码农之家其它相关文章! ……

<
1
>

Copyright 2018-2019 xz577.com 码农之家

版权责任说明