'When used as a descriptor, i.e.::
# File: athing.py
class Something(object):
log = Logger()
def hello(self):
self.log.info("Hello")
a L{Logger}\'s namespace will be set to the name of the class it is
declared on.  In the above example, the namespace would be
C{athing.Something}.
Additionally, its source will be set to the actual object referring to
the L{Logger}.  In the above example, C{Something.log.source} would be
C{Something}, and C{Something().log.source} would be an instance of
C{Something}.'

def __get__(self, oself, type=None):

    if (oself is None):
        source = type
    else:
        source = oself
    return self.__class__('.'.join([type.__module__, type.__name__]), source, observer=self.observer)
