diff --git a/Objects/object.c b/Objects/object.c index be3cce7e809..63c55ce2ad7 100644 --- a/Objects/object.c +++ b/Objects/object.c @@ -181,11 +181,13 @@ strobject(v) INCREF(v); return v; } + else if (v->ob_type->tp_str != NULL) + return (*v->ob_type->tp_str)(v); else { - object *func = getattr(v, "__str__"); + object *func; object *args; object *res; - if (func == NULL) { + if (!is_instanceobject(v) || (func = getattr(v, "__str__")) == NULL) { err_clear(); return reprobject(v); }