Uh oh!
There was an error while loading.Please reload this page.
- Notifications
You must be signed in to change notification settings - Fork33.7k
Closed
Description
We recently discovered the following error in our project:TypeError: descriptor '__weakref__' for 'XYZ' objects doesn't apply to a 'XYZ' object
XYZ in our case is a dataclass which uses slots (added v3.10) and weakref_slot (added v3.11) parameters.
We further investigated the error and have come to the following example to reproduce it:
importdataclassesimportweakref@dataclasses.dataclass(slots=True,weakref_slot=True)classEntityAsDataclass:x:int=10classEntity:__slots__= ("x","__weakref__")def__init__(self,x:int=10)->None:self.x=xe1=Entity()e1_ref=weakref.ref(e1)e2=EntityAsDataclass()e2_ref=weakref.ref(e2)asserte1.__weakref__ise1_ref# worksasserte2.__weakref__ise2_ref# fails with "TypeError: descriptor '__weakref__' for 'EntityAsDataclass' objects doesn't apply to a 'EntityAsDataclass' object"
I don't know if this is intended, but we expect EntityAsDataclass and Entity to have the same behavior here.
Thanks!