magic names in python

per9000 per9000 at gmail.com
Tue Jun 5 05:52:36 EDT 2007


On 5 Juni, 11:02, ai <ai.nat... at gmail.com> wrote:
> I don't think it is magic. If you think it is magic, can you talk
> about what's the better way and how can you implement the functions
> without any magic. [...]

Well, in a sense I guess all reserved words can be considered magic,
but in Python you can kill it (AFAIK that is pretty unique to python):
>>> a = int(8)
>>> int = float
>>> b = int(8)
>>> (a, b)
(8, 8.0)

I guess the amount and flavor of the magic is a matter of personal
taste - coming from a C*-background I pretty much like
myClass.myClass() instead of myClass.__init__() - but these are
equivalent and I guess I just have to live with the way python has
__special__ names and print a list of the cases I end up with often to
keep my memory from forgetting them.

> There are some special names even in Lisp. I guess you just hate the
> '__'.

Yes and no. Indeed, I find the overuse of underscores ugly, but I can
accept some use of __special__ functions. AFAIK there must be reserved
words in a programming language - f.x. names of ctors in oo-languages.
The exceptions are perhaps brainf**k and whitespace that has special
chars instead.

Also I find it unfortunate that the name mangling and underscores are
the way to make members "less public". But I can live with that - I
just have to read more python code to get the hang of it.
[:)]-|--<

/Per

--

Per Erik Strandberg
home: www.pererikstrandberg.se
work: www.incf.org
also: www.spongswedencare.se

>
> On Jun 4, 2:43 pm, per9000 <per9... at gmail.com> wrote:
>
> > Hi,
>
> > I recently started working a lot more in python than I have done in
> > the past. And I discovered something that totally removed the pretty
> > pink clouds of beautifulness that had surrounded my previous python
> > experiences: magic names (I felt almost as sad as when I discovered
> > the strange pink worms that eat you in nethack, not to mention the
> > mind flayers - I really hate them).
>
> > I guess all programming languages have magic names to some extent
> > (f.x. classes in the "C-family" have constructors that must have the
> > same name as the class (foo::foo) instead of foo.__init__).
>
> > I just used a search engine a little on this topic and I found no
> > comprehensive list of magic names in python.
>
> > So my questions:
> >  * is there a comprehensive list of magic names in python (so far i
> > know of __init__ and __repr__)?
> >  * are these lists complete or can magic names be added over time (to
> > the python "core")?
> >  * are magic names the same in different python versions?
>
> > I also tried (selected parts of(?)) the unittest package for use in
> > Zope and it seemed functions that I created for my test with the magic
> > prefix "test" were magic, other functions were not.
>
> > So another question emerges:
> >  * is the use of magic names encouraged and/or part of good coding
> > practice.
>
> > Live long and prosper,
> > Per
>
> > --
>
> > Per Erik Strandberg
> > home:www.pererikstrandberg.se
> > work:www.incf.org
> > also:www.spongswedencare.se





More information about the Python-list mailing list