pythonmetadataconventions

Finding a list of all double-underscore variables


Where can I find a list of all double-underscore variables that are commonly used in Python?

In Python, variables starting and ending with double underscores are typically to store metadata or are built into the system. For example,

#!/usr/bin/env python

__author__ = 'Michael0x2a'
__license__ = 'GPL'

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

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

I'm pretty certain __author__ and __license__ are pretty well known. What other double-underscore metadata variables are there? Is there a comprehensive list I can check somewhere? Can I just make up my own, or are there a bunch of ones that have become de-facto standards that I should use?

Things like __init__, __name__, and __doc__ are pretty much built into Python. Are those the only reserved double-underscore variables? Are there any more? Is there some place I can get a list?

Related:


Solution

  • If you want to see magic names whether documented or not, go to the Lib directory and run:

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

    That produces:

    '__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__'