John Hunter wrote: > >>>>> "Davor" == Davor <[EMAIL PROTECTED]> writes: > > Davor> not really - it was not my intention at all - but it seems > Davor> people get upset whenever this OO stuff is mentioned - and > Davor> what I did not expect at all at this forum as I believed > Davor> Python people should not be so OO hardcore (seems not all > Davor> as quite a few have indicated in their > Davor> replies)... Nevertheless, I think the discussion has > Davor> several quite good points! -- > Davor> http://mail.python.org/mailman/listinfo/python-list > > Consider the case of a list, say > > x = [1,2,3,4] > > suppose you wanted to reverse the list, so that x becomes [4,3,2,1]. > In a procedural language, one might do > > x = reverse(x) > > In an OO language such as python, one might do > > x.reverse() > > Is the OO way more obscure and complicated, etc? Not really -- it's > only a minor syntactical difference. One of the core ideas behind OO > programming is that data (the contents of the list 1,2,3,4) and > methods (sorting, reversing) are bound together into a single entity, > the object. On the face of it, this is rather sensible.
I think the OO way is slightly more obscure. It's obvious what x = reverse(x) does, but it is not clear unless you have the source code whether x.reverse() reverses x or if it returns a reversed list. If x.reverse() does the former, a disadvantage relative to the procedural approach is that a function can be used in an expression. It is clearer and more concise to write z = reverse(x) + reverse(y) than x.reverse() y.reverse() z = x + y Furthermore, if in Python the algorithm for the reverse function applies to many kinds of objects, it just needs to be coded once, whereas a reverse method would have to provided for each class that uses it (perhaps through inheritance). -- http://mail.python.org/mailman/listinfo/python-list