[EMAIL PROTECTED] (Alex Martelli) writes: > Mike Meyer <[EMAIL PROTECTED]> wrote: >> > Really, I don't think this makes a good poster child for your "attribute >> > mutators make life more difficult" campaign...;-) >> The claim is that there exists cases where that's true. This cases >> demonstrates the existence of such cases. That the sample is trivial >> means the difficulty is trivial, so yeah, it's a miserable poster >> child. But it's a perfectly adequate existence proof. > You appear to be laboring under the serious misapprehension that you > have demonstrate any DIFFICULTY whatsoever in writing mutators > (specifically attribute-setters). Let me break the bad news to you as > diplomatically as I can: you have not. All that your cherished example > demonstrates is: if you're going to write a method, that method will > need a body of at least one or two statements - in this case, I've shown > (both in the single concrete example, and in the generalized code) that > IF a set of attributes is interesting enough to warrant building a new > instance based on them (if it is totally uninteresting instead, then > imagining that you have to allow such attributes to be MUTATED on an > existing instance, while forbidding them to be ORIGINALLY SET to create > a new instance, borders on the delusional -- what cases would make the > former but not the latter an important functionality?!), THEN > implementing mutators (setters for those attributes) is trivially EASY > (the converse of DIFFICULT) -- the couple of statements in the attribute > setters' bodies are so trivial that they're obviously correct, assuming > just correctness of the factory and the state-copying methods.
It's not my cherished example - it actually came from someone else. That you can change the requirements so that there is no extra work is immaterial - all you've done is shown that there are examples where that don't require extra work. I never said that such examples didn't exist. All you've shown - in both the single concrete example and in a generalized case - is that any requirement can be changed so that it doesn't require any extra work. This doesn't change the fact that such cases exist, which is all that I claimed was the case. <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