bpo-33175: dataclasses should look up __set_name__ on class, not instance (GH-6305)
diff --git a/Lib/dataclasses.py b/Lib/dataclasses.py
index 8c197fe..bd7252c 100644
--- a/Lib/dataclasses.py
+++ b/Lib/dataclasses.py
@@ -248,11 +248,11 @@
# the default value, so the end result is a descriptor that had
# __set_name__ called on it at the right time.
def __set_name__(self, owner, name):
- func = getattr(self.default, '__set_name__', None)
+ func = getattr(type(self.default), '__set_name__', None)
if func:
# There is a __set_name__ method on the descriptor,
# call it.
- func(owner, name)
+ func(self.default, owner, name)
class _DataclassParams: