Tim Roberts wrote: > "Sarcastic Zombie" <[EMAIL PROTECTED]> 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. >> >> ... >> class Test(Wizard): >> grouping = [ >> [ 'age', 'weight' ], >> [ 'feet', 'inches' ], >> ['name', 'cash', 'fav_color', 'happy', 'birthday'] ] >> >> def __new__(self): >> age = Q_Integer("Your Age:", "age", 99) >> weight = Q_Integer("Your Weight:", "weight", 200) >> feet = Q_Integer("Feet tall:", "feet", 6) >> inches = Q_Integer("Inches Tall:", "inches", 0) >> name = Q_Chars("Your Name:", "name", max_length=15, >> required=True) >> cash = Q_Float("Money in hand?", "cash", required=True, >> default=55.50) >> fav_color = Q_Chars("Your favorite color?", "fav_color", >> required=True, max_length=50, choices=C_CHOICES) >> homezip = Q_Zip("Your zip code?", "homezip", required=True, ) >> happy = Q_Bool("Are you happy?", "happy", default=False) >> birthday = Q_Date("Your Birthday:", "birthday") > > The __new__ method is called with the CLASS as its first argument, not the > new instance. __new__ is supposed to RETURN the new instance. So, when > you set "age", you are setting a CLASS attribute that will be shared by all > instances.
As long as "age" really is set on the class. In the code above, "age" is just a local variable. > Is there a reason you don't just use __init__ instead of __new__, and use > "self.age" and "self.weight" and so on? I was asking myself the same thing... Chris -- http://mail.python.org/mailman/listinfo/python-list