import inspect


def construct_repr(cls, obj) -> str:
    """
    Forms a repr for obj.
    """
    attrs = [
        attr
        for attr in inspect.getmembers(obj)
        if not inspect.ismethod(attr[1])
        if not attr[0].startswith("_")
    ]
    fmt = ", ".join(
        f"{attr}={repr(f'{value[:100]}...' if len(str(value)) > 100 else value)}"
        for attr, value in attrs
    )
    return f"{cls.__name__}({fmt})"