__author__ 的起源是什么?

33

私有元数据变量(例如__author__)在模块中使用的惯例来自哪里?

这个 Python 邮件列表线程似乎暗示了一些关于它的讨论,但听起来这个惯例已经在广泛使用了。

除此之外,我只发现了这个有关包元数据的 PEP,它似乎是有影响力的,但仅仅是与此相关。

我希望能够找到一些明确的材料来使我的文档工具能够成功地解析这些元数据变量。

2个回答

22
我的猜测是,这源于旧时代包装元数据不常见的情况。 在 PEP 8 中,鼓励使用 _version_ 顶层变量来保存正在使用的版本控制系统的修订版本号。这可以追溯到2001-05-01。PEP 396正在取代此模块 _version_ 属性。 对于 _author_ 来说,有一个来自 Python 开发邮件列表的帖子涉及到这个问题。这个帖子可以追溯到 2001-03-01。作者质疑 _author_ 的使用:“下一步是什么?_cute_signoff_吗?”。 由于 PEPs 中没有提到,不必担心 _author_。包装元数据无论如何都是我们的朋友。 http://mail.python.org/pipermail/python-dev/2001-March/013328.html Ping 刚刚检查了这个: > 日志消息: > 添加 __author__ 和 __credits__ 变量。 > > > 索引:tokenize.py > =================================================================== > RCS 文件:/cvsroot/python/python/dist/src/Lib/tokenize.py,v > 检索修订版 1.19 > 检索修订版 1.20 > diff -C2 -r1.19 -r1.20 > *** tokenize.py 2001/03/01 04:27:19 1.19 > --- tokenize.py 2001/03/01 13:56:40 1.20 > *************** > *** 10,14 **** > it produces COMMENT tokens for comments and gives type OP for all operators.""" > > ! __version__ = "Ka-Ping Yee, 26 October 1997; patched, GvR 3/30/98" > > import string, re > --- 10,15 ---- > it produces COMMENT tokens for comments and gives type OP for all operators.""" > > ! __author__ = 'Ka-Ping Yee '我对这里插入的__credits__变量感到有些不舒服。首先,__credits__并不能真正描述给出的信息。其次,这个信息难道不应该在CVS历史记录中吗?我不赞成在源代码中包含模块历史的随机片段——这很可能会过时。(例如,从CVS日志中不清楚为什么我的贡献值得一提,而Tim的却没有——看起来Tim花了比我更多的时间思考这个问题。)
另一个让人不安的来源是,这种元数据变量根本没有标准。我们有__version__,我相信我们曾经同意过这一点(大约在1994年)。但是__author__?__credits__?接下来呢——__cute_signoff__?

1
鉴于此,可能没有可靠的方法来解析__author__或__credits__属性。 - itsafire

0

以下是 python-dev 邮件列表上最早使用 __author__ 变量的例子:

2001年3月2日,Guido van Rossum接受使用__author__变量讨论Yee Ka-Ping在1997年10月26日的提交:https://mail.python.org/archives/list/python-dev@python.org/message/5QQMSB2KYL3XK74LQI44Z4W247FC2O6D/ 2000年1月22日,https://mail.python.org/archives/list/python-dev@python.org/message/DVHMRM2RAOVHMSV5XRVMROKD4TTD3J6S/ 2000年9月22日,“它们对于普通模块也很有用,例如__version__、__copyright__、__author__等。看起来又到了PEP时间了;-)”,https://mail.python.org/archives/list/python-dev@python.org/message/OOEGGDQZYMTTMZRQ2X4ZILJWJRTOUHFK/

顺便说一下,像__author__和__version__这样的所谓“dunder”变量在2016年被添加到PEP8中,详情请见:https://github.com/python/peps/commit/0aa70aebf102d352b8476f04509a369bf3db276c


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接