def visit_Attribute(self, attr):
        if not isinstance(attr.ctx, ast.Load):
            return self.generic_visit(attr)
        source_explanation, source_result = self.visit(attr.value)
        explanation = "%s.%s" % (source_explanation, attr.attr)
        source = (attr.attr,) % "__exprinfo_expr.%s"
        co = self._compile(source)
        try:
            try:
                result = self.frame.eval(co, __exprinfo_expr=source_result)
            except AttributeError:
                # Maybe the attribute name needs to be mangled?
                if not attr.attr.startswith("__") or attr.attr.endswith("__"):
                    raise
                source = "getattr(__exprinfo_expr.__class__, '__name__', '')"
                co = self._compile(source)
                class_name = self.frame.eval(co, __exprinfo_expr=source_result)
                mangled_attr = "_" + class_name +  attr.attr
                source = "__exprinfo_expr.%s" % (mangled_attr,)
                co = self._compile(source)
                result = self.frame.eval(co, __exprinfo_expr=source_result)
        except Exception:
            raise Failure(explanation)
        explanation = "%s\n{%s = %s.%s\n}" % (self.frame.repr(result),
                                              self.frame.repr(result),
                                              source_explanation, attr.attr)
        # Check if the attr is from an instance.
        source = "%r in getattr(__exprinfo_expr, '__dict__', {})"
        source = source % (attr.attr,)
        co = self._compile(source)
        try:
            from_instance = self.frame.eval(co, __exprinfo_expr=source_result)
        except Exception:
            from_instance = None
        if from_instance is None or self.frame.is_true(from_instance):
            rep = self.frame.repr(result)
            pattern = "%s\n{%s = %s\n}"
            explanation = pattern % (rep, rep, explanation)
        return explanation, result
dataset/ETHPy150Open pytest-dev/pytest/_pytest/assertion/reinterpret.py/DebugInterpreter.visit_Attribute/swapped operands of `%`