Steven D'Aprano <[EMAIL PROTECTED]> writes: > On Wed, 07 Dec 2005 23:58:02 -0500, Mike Meyer wrote: >> "solaris_1234" <[EMAIL PROTECTED]> writes: >>> 1) The stmt "board.Blist[10].DrawQueen(board.Blist[10].b1)" seems >>> awkward. Is there another way (cleaner, more intuitive) to get the >>> same thing done? >> Yes. Reaching through objects to do things is usually a bad idea. > I don't necessarily disagree, but I don't understand why you say this. Why > it is bad?
Such behavior couples you to the objects you use very tightly. This makes it harder to adapt those objects to changing needs. One popular rule of thumb is the "Law of Demeter". Googling for that will turn up lots of information. My standard object interface is modeled after Meyer's presentation in OOSC: an objects state is manipulated with methods and examined with attributes; manipulating attributes doesn't change the internal state of the object. This makes it possible to change the internal representation of a class without having to change all the clients of the class to match. >> Some languages don't allow you to do that at all; > Fortunately we aren't using "some languages", we're using Python, and so > we aren't forced to fill our classes with helper functions when we can > simply call the object methods directly. Yup. I'm not pushing for a change in Python to suit my design goals. If I feel the need for languages that enforce my design decisions, I know where to find them. <mike -- Mike Meyer <[EMAIL PROTECTED]> http://www.mired.org/home/mwm/ Independent WWW/Perforce/FreeBSD/Unix consultant, email for more information. -- http://mail.python.org/mailman/listinfo/python-list