2012-03-02 5 views
21

Quy ước sử dụng các biến siêu dữ liệu riêng tư như __author__ trong mô-đun đến từ đâu?Nguồn gốc của __author__ là gì?

This Chủ đề danh sách gửi thư của Python có vẻ gợi ý tại một số cuộc thảo luận về nó vào năm 2001, nhưng theo âm thanh của nó, quy ước đã được đưa ra ngoài tự nhiên.

Khác với điều đó, tôi chỉ có thể tìm thấy this PEP on package metadata, có vẻ có ảnh hưởng nhưng hữu hình ở mức tốt nhất.

Tôi muốn thử và tìm một số tài liệu rõ ràng về chủ đề để công cụ tài liệu của tôi có thể phân tích cú pháp các biến siêu dữ liệu này thành công.

Trả lời

17

Đoán của tôi là từ thời điểm cũ khi dữ liệu meta đóng gói không phổ biến. Trong PEP 8, khuyến khích sử dụng biến cấp cao nhất __version__ để giữ id sửa đổi của hệ thống phiên bản đang sử dụng. Ngày này bắt đầu từ 2001-05-01. PEP 396 thay thế cho thuộc tính mô-đun __version__.

Đối với __author__ có một bài đăng từ danh sách gửi thư python dev, liên quan đến vấn đề này. Điều này có từ 2001-03-01. Tác giả đặt câu hỏi về việc sử dụng __author__: "Cái gì tiếp theo? __cute_signoff__?".

Vì không có đề cập trong PEP, chúng tôi không phải lo lắng về __author__. Siêu dữ liệu bao bì là bạn của chúng tôi.

http://mail.python.org/pipermail/python-dev/2001-March/013328.html

 
Ping just checked in this: 

> Log Message: 
> Add __author__ and __credits__ variables. 
> 
> 
> Index: tokenize.py 
> =================================================================== 
> RCS file: /cvsroot/python/python/dist/src/Lib/tokenize.py,v 
> retrieving revision 1.19 
> retrieving revision 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__ = 'first version, 26 October 1997; patched, GvR 3/30/98' 
> 
> import string, re 

I'm slightly uncomfortable with the __credits__ variable inserted 
here. First of all, __credits__ doesn't really describe the 
information given. Second, doesn't this info belong in the CVS 
history? I'm not for including random extracts of a module's history 
in the source code -- this is more likely than not to become out of 
date. (E.g. from the CVS log it's not clear why my contribution 
deserves a mention while Tim's doesn't -- it looks like Tim probably 
spent a lot more time thinking about it than I did.) 

Anothor source of discomfort is that there's absolutely no standard 
for this kind of meta-data variables. We've got __version__, and I 
believe we once agreed on that (in 1994 or so :-). But __author__? 
__credits__? What next -- __cute_signoff__? 
+0

Với này có lẽ không có cách nào đáng tin cậy phân tích cú pháp \ _ \ _ tác giả \ _ \ _ hoặc \ _ \ _ tín \ _ \ _ thuộc tính. – itsafire