From: Mark Thomas Date: 2009-04-14T21:30:04+09:00 Subject: Re: double underscore nomenclature in Python On Apr 13, 8:04 pm, Todd Benson wrote: > So, I'm stuck re-engineering some dreadful Python library code into > Ruby (and I mean terrible, a mish-mash of different clashing > programming paradigms -- inheritance, delegation, etc. severely > intertwined all over, ugghh), and I came across Python's use of these > double underscore methods (__hook_method__.  I'm a Python virgin; so > sue me.  Never learned Perl, either). > > I'm curious as to why Ruby unintentionally keeps these type of things > less obvious.  I've seen many questions on this group concerning #puts > using an object's #to_s to display itself.  Don't get me wrong; it > doesn't bother me at all, but I've run across a few newbies that > struggle with this type of "hidden" guru knowledge (It's surely not > hidden, but not easy to discover either; sort of like a live > Architeuthis). Python uses __method_name to denote private methods (not enforced, just a convention). Ruby has keywords 'private' and 'protected'. Python uses __method_name__ with leading and trailing underscores for special system functions with pre-defined behavior. Like __init__() where ruby uses 'initialize'. Python has certain underscore methods for operator overloading; you define __add__() to overload '+'. Whereas in Ruby, you simply define the '+' method. I'm not sure how this equates to hidden guru knowledge. Ruby makes more sense to me in these situations. -- Mark.