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