Sarcastic Zombie wrote: > Code included below. > > Basically, I've created a series of "question" descriptors, which each > hold a managed value. This is so I can implement validation, and render > each field into html automatically for forms. > > My problem is this: every instance of my "wizard" class has unique self > values, but they share the exact same descriptor values.
That's because descriptors only work as class attributes, not instance attributes. > Meaning, if > > t = Test("ar") > y = Test("ar") > > t is y > False > > t.age is y.age > True As an attribute of the owner class, the descriptor is instantiated once for the class itself, and not for every instance of the owner class: class Foo(object): # Class attribute desc = Descriptor() def __init__(self, value): # Instance attributes go here self.value = somevalue > Code below. What am I not understanding? > ----------------------------------------- ... > class Question(object): ... > def __get__(self, instance, owner): > return self If you want to do per-instance stuff, use the "instance" argument: # Warning: simplified class Descriptor(object): def __get__(self, instance, owner): return instance._desc def __set__(self, instance, value): instance._desc = value Chris -- http://mail.python.org/mailman/listinfo/python-list