Steve D'Aprano <[email protected]>:
> def __init__(self, bashful=10.0, doc=20.0, dopey=30.0,
> grumpy=40, happy=50, sleepy=60, sneezy=70):
> [...]
>
> @classmethod
> def from_strings(cls, bashful='10.0', doc='20.0', dopey='30.0',
> grumpy='40', happy='50', sleepy='60', sneezy='70'):
> [...]
>
> That's a pretty ugly DRY violation. Imagine that I change the default
> value for bashful from 10.0 to (let's say) 99. I have to touch the
> code in three places (to say nothing of unit tests):
OMITTED = object()
def __init__(self, bashful=OMITTED, doc=OMITTED, dopey=OMITTED,
grumpy=OMITTED, happy=OMITTED, sleepy=OMITTED,
sneezy=OMITTED):
# the usual assign arguments to attributes dance...
self.bashful = 10.0 if bashful is OMITTED else bashful
self.doc = 20.0 if doc is OMITTED else doc
[...]
@classmethod
def from_strings(cls, bashful=OMITTED, doc=OMITTED dopey=OMITTED,
grumpy=OMITTED, happy=OMITTED, sleepy=OMITTED,
sneezy=OMITTED):
if bashful is not OMITTED:
bashful = float(bashful)
if doc is not OMITTED:
doc = float(doc)
[...]
Helper functions will make it look a bit less repetitious.
Marko
--
https://mail.python.org/mailman/listinfo/python-list