def attributes_section(thing, doc, header_level):
    """
    Generate an attributes section for classes.

    Prefers type annotations, if they are present.

    Parameters
    ----------
    thing : class
        Class to document
    doc : dict
        Numpydoc output
    header_level : int
        Number of `#`s to use for header

    Returns
    -------
    list of str
        Markdown formatted attribute list
    """
    # Get Attributes

    if not inspect.isclass(thing):
        return []

    props, class_doc = _split_props(thing, doc["Attributes"])
    tl = type_list(inspect.signature(thing), class_doc, "\n### Attributes\n\n")
    if len(tl) == 0 and len(props) > 0:
        tl.append("\n### Attributes\n\n")
    for prop in props:
        tl.append(f"- [`{prop}`](#{prop})\n\n")
    return tl