为python类生成repr方法的快捷方式

repr的Python项目详细描述


为类生成repr方法的神奇快捷方式

  • 自由软件:BSD许可证

安装

pip install repr

这个包包含一个单独的模块magic_repr,调用so 不与standart python的repr冲突。

推理

你每次写这样的代码时都会怎么想?

def__repr__(self):return"""
Issue(changelog={self.changelog},
      type={self.type},
      comment={self.comment},
      created_at={self.created_at},
      resolved_at={self.resolved_at})""".format(self=self).strip().encode('utf-8')

这不是更好看了吗?

__repr__=make_repr('changelog','type','comment','created_at','resolved_at')

这会产生更好的输出:

<Issuechangelog=<Changelognamespace=u'python'name=u'geocoder'source=u'https://github.com/DenisCarriere/geocoder'>type=u'wrong-version-content'comment=u'AllMyChanges should take release notes from the web site.'created_at=datetime.datetime(2016,6,17,6,44,52,16760,tzinfo=<UTC>)resolved_at=None>

魔法的另一个优势

是递归性。如果对对象使用magic_repr,则 包含彼此,则父对象的表示将包括 正确嵌套的子对象:

<Foobars={1:<Barfirst=1second=2third=3>,2:<Barfirst=1second=2third=3>,u'три':<Barfirst=1second=2third=3>}>

所有这些都是免费的只要做__repr__ = make_repr()

用法

对于简单的情况,不需要参数就可以调用make_repr。会有结果的 哪些属性对象具有并将按字母顺序输出它们。

还可以指定要包含在“表示”中的属性:

frommagic_reprimportmake_repr__repr__=make_repr('foo','bar')

并指定一个函数,使用关键字为属性创建值:

frommagic_reprimportmake_reprclassSome(object):defis_active(self):returnTrueSome.__repr__=make_repr(active=Some.is_active)

注意,在本例中,__repr__是在类定义之后创建的。 这是因为在类内部它不能引用自己。

开发

要运行所有测试,请运行:

tox

注意,要合并来自所有tox环境的覆盖率数据,请执行以下操作:

Windows^{pr 9}$
Other^{pr 10}$

变更日志

0.3.1(2016-06-22)

  • 已修复问题1阻止生成的repr方法在多线程程序中工作。

0.3.0(2016-06-20)

  • 现在make_repr可以用于递归数据结构

0.2.1(2016-06-19)

  • 改进了文档

0.2.0(2016-06-19)

  • 更好地处理嵌套数据结构
  • 作为属性值源的可调用项。
  • 一些文件。

0.1.0(2016-06-09)

  • pypi上的第一个版本。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java使用Hibernate替换一组记录的正确方法是什么   java调用存储过程时返回相同的记录   java创建一个ActionListener,逐步更新JPanel   java如何为这个WSDL工作wsimport我遇到了错误,我无法让它工作   Java Mysql空指针异常   java执行超时(1600ms)如何优化此代码以更快地运行?   java在Spring的@Transactional方法期间处理异常   java如何在驱动程序类中调用泛型方法   java如何理解SpringMVC工作流?   java在TomcatJSP页面中使用JDK15的JEP378文本块   java为什么在类中找不到主方法?   在java中创建链表而不使用内置方法/importing util   java在空格和破折号上拆分字符串,但不在字符串的值上拆分字符串   不带按钮的java JOptionPane   java如何减少Netbeans中JTable的列?   通过spring的JavaRESTAPI   Java:最简单的日期减法   来自JPanel的java BuffereImage,背景透明   JavaJFrame:如何使用linebreaklike行为创建简单布局?