implemented null object design pattern

This commit is contained in:
tylerlaberge
2016-08-06 16:33:15 -04:00
parent 87bcb4b270
commit c643902979
2 changed files with 155 additions and 0 deletions
+75
View File
@@ -0,0 +1,75 @@
class Null(object):
"""
A class for implementing Null objects.
This class ignores all parameters passed when constructing or
calling instances and traps all attribute and method requests.
Instances of it always (and reliably) do 'nothing'.
The code might benefit from implementing some further special
Python methods depending on the context in which its instances
are used. Especially when comparing and coercing Null objects
the respective methods' implementation will depend very much
on the environment and, hence, these special methods are not
provided here.
Dinu C. Gherman,
August 2001
http://code.activestate.com/recipes/68205-null-object-design-pattern/
"""
# object constructing
def __init__(self, *args, **kwargs):
"""
Ignore parameters.
"""
pass
# object calling
def __call__(self, *args, **kwargs):
"""
Ignore method calls.
"""
return self
# attribute handling
def __getattr__(self, mname):
"""
Ignore attribute requests.
"""
return self
def __setattr__(self, name, value):
"""
Ignore attribute setting.
"""
return self
def __delattr__(self, name):
"""
Ignore deleting attributes.
"""
return self
# misc.
def __repr__(self):
"""
Return a string representation.
"""
return ''
def __str__(self):
"""
Convert to a string and return it.
"""
return ''
def __bool__(self):
"""
Boolean of Null object is always False.
"""
return False