<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def make_repr(self, attrs):
 """Construct a repr string. If `config.REPR_VERBOSITY` is ``1`` or ``2``, this function calls the object's __str__ method. Although this breaks the convention that __repr__ should return a string which can reconstruct the object, readable reprs are invaluable since the Python interpreter calls `repr` to represent all objects in the shell. Since PyPhi is often used in the interpreter we want to have meaningful and useful representations. Args: self (obj):
 The object in question attrs (Iterable[str]):
 Attributes to include in the repr Returns: str: the ``repr``esentation of the object """

    # TODO: change this to a closure so we can do
    # __repr__ = make_repr(attrs) ???

    if config.REPR_VERBOSITY in [MEDIUM, HIGH]:
        return self.__str__()

    elif config.REPR_VERBOSITY is LOW:
        return '{}({})'.format(
            self.__class__.__name__,
            ', '.join(attr + '=' + repr(getattr(self, attr))
                      for attr in attrs))

    raise ValueError('Invalid value for `config.REPR_VERBOSITY`')