Double underscores -- ugly?

Ben Finney bignose+hates-spam at
Tue Feb 19 00:39:10 CET 2008

benhoyt <benhoyt at> writes:

> I realise that double underscores make the language conceptually
> cleaner in many ways (because fancy syntax and operator overloading
> are just handled by methods), but they don't *look* nice.

That's a good thing, in that it draws attention to the names. The
convention is by design: these names will be treated specially, so
they should stand out visually to the reader.

> A solution could be as simple as syntactic sugar that converted to
> double underscores behind the scenes. A couple of ideas that come to
> my mind (though these have their problems too):
> def ~init(self):  # shows it's special, but too like a C++ destructor
> def +init(self):  # a bit too additive :-)
> defop add(self, other):  # or this, equivalent to "def __add__"
> def operator add(self, other):  # new keyword, and a bit wordy

None of these, IMO, meet the "needs to stand out" requirement met by
double-underscore names.

They also introduce special cases for the language parser (and thus
for the reader to understand how the language will be parsed), whereas
double-underscore names work without any special syntax handling.

 \           “Holy contributing to the delinquency of minors, Batman!” |
  `\                                                            —Robin |
_o__)                                                                  |
Ben Finney

More information about the Python-list mailing list