Call "__set_name__" on the attribute "__wrapped__" if the object's type doesn't have "__set_name__" but the object has "__wrapped__"
The question is that the decorator may break the wrapper object’s behavior if it’s behavior depends on whether the “__set_name__” is called. The fake code is like: def find_set_name_and_call(obj, owner, name,…