'Calculate the class-key for this class.
Returns:
Class key for class.  By default this is a the list of classes
of the hierarchy, starting with the root class and walking its way
down to cls.'

@classmethod
def class_key(cls):

    if (not hasattr(cls, '__class_hierarchy__')):
        raise NotImplementedError('Cannot    determine    class    key    without    class    hierarchy')
    return tuple((cls.class_name() for cls in cls.__class_hierarchy__))
