stylistic question -- optional return value

Erik Max Francis max at alcyone.com
Fri Aug 30 18:53:30 EDT 2002


Stefan Schwarzer wrote:

> How do you know that you really got a dictionary and not some object
> of a class
> that looks like a dictionary at first sight? IMHO, you have to define
> the interface
> anyway.

If it has a mapping interface and it looks like a dictionary even though
it really isn't one, that's fine too.  If I do a repr and see {...}, I
have a good idea what to do with it.  If I see <DummyClass instance
0x7395473>, it's not at all clear that it's really just a dummy "struct"
(in the C sense, not the Python module sense) and I'm supposed to access
its members named such and so.  If it's a dictionary, or a
dictionary-like mapping object, then it's much clearer.

> I think that depends on the circumstances. As a guideline, I would use
> a custom
> class if the return value has an abstract meaning that should be
> covered by a class.

As I mentioned in another article, if the return value is really going
to be a proxy that's going to do be used to do some complicated
behavior, then it makes sense to return a full-fldged class instance
with well-defined methods.  The example I used was a statement parsing
function that returned a Command instance that you'd call the .execute
method of to engage the command.  In that case you are talking about a
full-fldged instance, rather than just an aggregate object.

-- 
 Erik Max Francis / max at alcyone.com / http://www.alcyone.com/max/
 __ San Jose, CA, US / 37 20 N 121 53 W / ICQ16063900 / &tSftDotIotE
/  \ There is nothing so subject to the inconstancy of fortune as war.
\__/ Miguel de Cervantes
    Church / http://www.alcyone.com/pyos/church/
 A lambda calculus explorer in Python.



More information about the Python-list mailing list