class DocWrap(object):
'''
This class provides a simple base class for wrapper objects around opaque,
undocumented blobs. Instances should provide custom doc strings to make their opaque
contents appear as a documented Python object.
'''
def __init__(self, obj, docstr):
'''
initialise DocWrap object with given opaque instance and docstring for it.
'''
self.__instance__ = obj
self.__doc__ = docstr
def __setattr_(self, name, value):
if name == '__instance__':
object.__setattr__(self, name, value)
else:
object.__setattr__(self.__instance__, name, value)
def __getattribute__(self, name):
if name == '__doc__':
return object.__getattribute__(self, name)
elif name == '__instance__':
return object.__getattribute__(self, name)
else:
return object.__getattribute__(self.__instance__, name)
test= DocWrap(object(), 'hello world!')
ex = DocWrap(Exception(), 'some other type for comparison of dir() output')
print(test.__doc__) # should appear as 'hello world!'
print(dir(test))
print(dir(ex))