magicmethods icon indicating copy to clipboard operation
magicmethods copied to clipboard

Descriptor example doesn't handle multiple instances

Open NYKevin opened this issue 10 years ago • 2 comments

If the user instantiates multiple Distance objects, the descriptors will interfere with each other.

There are two (and-a-half) ways to fix this:

  1. Attach a weakref.WeakKeyDictionary to instances of Meter. Use instance as the key and value as the value. This has the disadvantage that Distance must be hashable and probably should not override __eq__().
  2. Place the information in an attribute of the Distance objects. This has the disadvantage of requiring cooperation between the Distance class and the Meter class. This requirement can be eased with the use of a metaclass, but never truly eliminated.
  3. (variation of 2) Turn Distance.meter into a @property (or raw attribute) and delete the Meter class entirely.

NYKevin avatar Sep 18 '14 23:09 NYKevin

thanks for the report @NYKevin, I will take a look soon

RafeKettler avatar Sep 23 '14 18:09 RafeKettler

This is addressed in my pull request from last year. I used @NYKevin's option 2. I'm curious as to why my PR seems to have gone unnoticed.

brandjon avatar Nov 24 '14 00:11 brandjon