Null pattern

Ben Finney bignose+hates-spam at benfinney.id.au
Thu Jun 19 20:54:50 EDT 2008


George Sakkis <george.sakkis at gmail.com> writes:

> For example, consider the container methods __len__, __iter__ and
> __contains__. The obvious choice for a null container is an empty
> one. When taking __getitem__ into account though, the behaviour
> looks inconsistent:
>     >>> Null[3]
>     Null
>     >>> len(Null)
>     0

I think the typical use case of Null (a special object designed to
allow any use harmlessly) would allow the above inconsistency as the
least-worst solution.

> Another group of methods is rich comparisons: Should Null > x be
> allowed and if so, what it should return ?

I expect this should take advantage of the following provision from
<URL:http://docs.python.org/ref/customization.html>:

    A rich comparison method may return the singleton NotImplemented
    if it does not implement the operation for a given pair of
    arguments. …

So, perhaps 'Null.__cmp__' should always return 'NotImplemented',
allowing Python's fallback comparison behaviour to take over.

-- 
 \        "Are you pondering what I'm pondering, Pinky?" "Sure, Brain, |
  `\      but how are we going to find chaps our size?"  -- _Pinky and |
_o__)                                                       The Brain_ |
Ben Finney
w



More information about the Python-list mailing list