[Tutor] Null Object Design Pattern Question
Gonçalo Rodrigues
op73418 at mail.telepac.pt
Sun Jun 13 16:55:07 EDT 2004
Em Sun, 13 Jun 2004 08:59:10 -0800, Tim Johnson <tim at johnsons-web.com>
atirou este peixe aos pinguins:
>I have been looking at
>
>http://aspn.activestate.com/ASPN/Cookbook/Python/Recipe/68205
>
>which has an example of using a Null() object.
>
>Unfortunately, I'm having a problem wrapping my brain around
>the usefulness of this object compared to just using None.
>
>Does anyone have some further examples of the 'superiority'
>of this approach over *None*.
Imagine a null object as a kind of sink: it responds to all messages
without barfing. Compare the following:
>>> obj = None
>>> obj.method()
Traceback (most recent call last):
File "<interactive input>", line 1, in ?
AttributeError: 'NoneType' object has no attribute 'method'
>>> class Null(object):
... def __call__(self, *args, **kwargs):
... return self
... def __getattr__(self, attrib):
... return self
...
>>> obj = Null()
>>> obj.method()
<__main__.Null object at 0x00EFECF0>
>>>
The Null() doesn't barf when method is called. This allows for simpler
coding in some situations.
With my best regards,
G. Rodrigues
P.S: Googling for "null object pattern" (or some such) is bound to
turn up something.
More information about the Tutor
mailing list