查找所有双下划线变量的列表?

35

相关: Python文件的通用头格式是什么?

我在哪里可以找到常用的所有双下划线变量列表?

在Python中,以双下划线开头和结尾的变量通常用于存储元数据或内置于系统中。例如,

#!/usr/bin/env python

__author__ = 'Michael0x2a'
__license__ = 'GPL'

class Test(object):
    def __init__(self):
        print 'Hello World!'

if __name__ == '__main__':
    t = Test()

我非常确定__author____license__是相当知名的。还有哪些双下划线元数据变量?是否有一个全面的列表可以查看?我能自己发明吗,还是有一堆已成为事实标准的变量我应该使用?
__init____name____doc__这样的东西几乎都内置于Python中。那些是唯一的保留双下划线变量吗?还有更多吗?我可以在哪里获取列表?
[编辑] 我正在浏览并遇到另一个question,链接到一个包含许多双下划线变量的mindmap
3个回答

41

如果你想查看已经记录或未记录的神奇名称,请前往Lib目录并运行:

egrep -oh '__[A-Za-z_][A-Za-z_0-9]*__' *.py | sort | uniq

那将产生:

'__all__'
'__args__'
'__author__'
'__bases__'
'__builtin__'
'__builtins__'
'__cached__'
'__call__'
'__class__'
'__copy__'
'__credits__'
'__date__'
'__decimal_context__'
'__deepcopy__'
'__dict__'
'__doc__'
'__exception__'
'__file__'
'__flags__'
'__ge__'
'__getinitargs__'
'__getstate__'
'__gt__'
'__import__'
'__importer__'
'__init__'
'__ispkg__'
'__iter__'
'__le__'
'__len__'
'__loader__'
'__lt__'
'__main__'
'__module__'
'__mro__'
'__name__'
'__package__'
'__path__'
'__pkgdir__'
'__return__'
'__safe_for_unpickling__'
'__setstate__'
'__slots__'
'__temp__'
'__test__'
'__version__'

9
有趣的是,这个列表中没有包括许多著名的dunder名称,例如__add__、__iadd__、__radd__等。 - Ned Batchelder
9
要获得更完整的列表,您需要递归搜索__Lib__及其下面的目录:find Lib -name '*.py' -exec egrep -oh '__[A-Za-z_][A-Za-z_0-9]*__' '{}' \; | sort | uniq。您会发现有许多名称--在我的Py27版本中有256个 :) - Raymond Hettinger

14

PEP 8 列出 __version__ 作为唯一的全局变量,仅用于文档目的。 - S.Lott
1
有趣的是,在链接的语言参考中并没有出现__version__ - Bengt
4
因为这不是该语言的一部分。 - Ignacio Vazquez-Abrams

1

当我使用时

dir(object)

我得到了这些:

'__class__', '__delattr__', '__dir__', '__doc__', '__eq__',
'__format__', '__ge__', '__getattribute__', '__gt__', '__hash__', 
'__init__', '__init_subclass__', '__le__', '__lt__', '__ne__',
'__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__',
'__sizeof__', '__str__', '__subclasshook__'

我认为它们是Python中每个对象都具有的dunder名称。


这还不是全部。例如,__call__ 也没有包含在内。 - wjandrea

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