Jens wrote:
> On Dec 13, 2004, at 17:15, Florent Guillaume wrote:
> > Can we have instead:
> >
> >     def getUserById(self, id, default=_marker):
> >         """Return the user corresponding to the given id.
> >
> >         Raises a KeyError if the user does not exist and no default
> >         is provided.
> >         """
> >         user = self.getUser(id)
> >         if user is not None:
> >             return user
> >         if default is not _marker:
> >             return default
> >         raise KeyError(id)
> What is the advantage of throwing a KeyError over simply returning 
> None?

Well it's standard usage all over Zope for all methods that accept an
optional default to raise an error if no default is provided. Why accept
a default when None is returned anyway if no default is provided, and
None is not an acceptable user in itself ? That just doesn't make sense.

> I don't see the reason for "getUser" and "getUserById" behaving 
> in different ways here. They should both behave similar.

Chris clarified that getUser is really getUserByName so I'm ok with
that. If the method should be never raise and return None if nothing's
provided, then let's use simply:

def getUserById(self, id, default=None):
    user = self.getUser(id)
    if user is not None:
        return user
    return default

or even:

def getUserById(self, id, default=None):
    return self.getUser(id) or default


Florent Guillaume, Nuxeo (Paris, France)   CTO, Director of R&D
+33 1 40 33 71 59   [EMAIL PROTECTED]
Zope-Dev maillist  -  [EMAIL PROTECTED]
**  No cross posts or HTML encoding!  **
(Related lists - )

Reply via email to