Unfortunate chop within the `join()` ...

    summary += '\n     Attributes:\n' + \
        '\n'.join(attribute_summary)

... kinda reads better.