stylistic question -- optional return value

Bjorn Pettersen BPettersen at NAREX.com
Wed Aug 28 21:12:23 CEST 2002


> From: Andrew Koenig [mailto:ark at research.att.com] 
> 
> >> From: Andrew Koenig [mailto:ark at research.att.com]
> >> 
> >> Suppose I have a function that sometimes returns one value
> >> and sometimes returns two.  What's the cleanest way to define 
> >> such an interface?
> 
> Bjorn> The only time I've had type errors in my Python 
> programs is when 
> Bjorn> I've tried to do this with a function. If I *have* to do it, I 
> Bjorn> would probably chose something along the lines of:
> 
> Bjorn>   def fn(args):
> Bjorn>       class Tmp: pass
> Bjorn>       tmp = Tmp()
> Bjorn>       ...
> Bjorn>       tmp.x = __
> Bjorn>       tmp.y = __
> Bjorn>       return tmp
> 
> Bjorn> your next question should be "why isn't fn a method of Tmp 
> Bjorn> instead" to which I would reply "indeed" <wink>
> 
> Actually, my next question would be why you didn't use a 
> 2-tuple instead of defining a class with the same properties.

I could have used a dict, but I generally never use tuples if I need to
return a variable number of arguments. Since I'm assuming the values
you're returning are related, it seems natural to me to wrap them up in
an instance.

> And my answer to your question is that the function I'm 
> defining is actually a family of methods in a fairly 
> substantial class hierarchy.

You know your situation best of course, so maybe it makes more sense for
you to always return a tuple with sentinels for missing data...?

-- bjorn




More information about the Python-list mailing list