simple (I hope!) problem

Steven D'Aprano steve-REMOVE-THIS at cybersource.com.au
Tue Aug 3 02:20:12 EDT 2010


On Mon, 02 Aug 2010 17:19:46 -0700, samwyse wrote:

> Fortunately, I don't need the functionality of the object, I just want
> something that won't generate an error when I use it.  So, what is the
> quickest way to to create such an object (replacing the 'pass' in my
> first snippet).  My solution is this:
> 
>     class C:
>         def filter(self, *args, **kwds):
>             pass
>     register = C()
> 
> but it seems like I should be able to do something "better", as measured
> by lines of code, faking more than just a 'filter' method, or both.  Any
> ideas?  Thanks!


You want a variation on the Null Object design pattern.

class NullWithMethods(object):
    def __getattr__(self, name):
        return self
    def __call__(self, *args, **kwargs):
        pass


And in action:

>>> c = NullWithMethods()
>>> c.spam("hello", "world")
>>> c.something_completely_unlikely.spam.ham("hello", "world", foo=42)



-- 
Steven



More information about the Python-list mailing list