magic names in python

Marc 'BlackJack' Rintsch bj_666 at gmx.net
Mon Jun 4 03:11:45 EDT 2007


In <1180939436.862957.127810 at p77g2000hsh.googlegroups.com>, per9000 wrote:

> I just used a search engine a little on this topic and I found no
> comprehensive list of magic names in python.

They are usually mentioned in parts of the docs where the relevant
functionality is explained.  For example in `Special method names`_ in the
reference manual.

And of course all covered in the reference manual are under
`_ (underscore)`_ in its index.  In the `library reference's index`_
you'll find some more that are used by modules.

.. _`_ (underscore)`: http://docs.python.org/ref/genindex.html#letter-_
.. _library reference's index: http://docs.python.org/lib/genindex.html
.. _Special method names: http://docs.python.org/ref/specialnames.html

>  * are these lists complete or can magic names be added over time (to
> the python "core")?

Magic names can be added over time.  For example the ``with`` statement
introduced `__enter__()` and `__exit__()` in Python 2.5.  And some special
names may even change were the docs say so or if they aren't mentioned at
all in the docs.

>  * are magic names the same in different python versions?

Yes.

> So another question emerges:
>  * is the use of magic names encouraged and/or part of good coding
> practice.

What do you mean by "use"?  Implement them to override behavior?  Yes,
that's their purpose.  Invent new magic names?  No of course not, they are
special for a reason:  preventing name clashes with the user's names.

Ciao,
	Marc 'BlackJack' Rintsch



More information about the Python-list mailing list