On Sun, 24 Feb 2013 07:46:07 -0800, piterrr.dolinski wrote: > Hi guys, > > Question. Have this code > > intX = 32 # decl + init int var > intX_asString = None # decl + init with NULL string var > > intX_asString = intX.__str__ () # convert int to string > > What are these ugly underscores for? > _________________str___________________
To demonstrate that the person who wrote this code was not a good Python programmer. I hope it wasn't you :-) This person obviously had a very basic, and confused, understanding of Python. And, quite frankly, was probably not a very good programmer of *any* language: - poor use of Hungarian notation for variable names; - pointless pre-declaration of values; - redundant comments that don't explain anything. If that code came from the code-base you are maintaining, no wonder you don't think much of Python! That looks like something I would expect to see at the DailyWTF. http://thedailywtf.com/ The above code is better written as: x = 32 x_asString = str(x) Double-underscore methods are used for operator overloading and customizing certain operations, e.g. __add__ overloads the + operator. You might define a class with a __str__ method to customize converting the object to a string: # Toy example. class MyObject: def __str__(self): return "This is my object" But you would not call the __str__ method directly. (I won't say "never", because there are rare, advanced, uses for calling double-underscore methods directly.) You would use a public interface, such as the str() function. -- Steven -- http://mail.python.org/mailman/listinfo/python-list