Interestingly, if you change swaroop = Person('Swaroop', 'M') swaroop.sayHi() swaroop.howMany() kalam = Person('Abdul Kalam', 'M') kalam.sayHi() kalam.howMany() cathy = Person('Catherine', 'F') cathy.sayHi() cathy.howMany() swaroop.sayHi() swaroop.howMany()
to def main(): swaroop = Person('Swaroop', 'M') swaroop.sayHi() swaroop.howMany() kalam = Person('Abdul Kalam', 'M') kalam.sayHi() kalam.howMany() cathy = Person('Catherine', 'F') cathy.sayHi() cathy.howMany() swaroop.sayHi() swaroop.howMany() return 0 if __name__ == "__main__": sys.exit(main()) The problem goes away. (This is a good coding practice in any event.) As others have pointed out, the order in which local variables are deleted is undefined. It looks to me as if the class Person got deleted before Catherine did. Adding del kalam del cathy del swaroop to the end of the program did fix the problem, presumably by forcing kalam, cathy, and swaroop from being deleted before Person. However, Adding self.myclass = Person to the __init__() method didn't stop the problem. I thought it might, because then each of the objects would have held a reference to Person. Actually, I would have thought they'd hold a reference by merely existing, so is this not a bug? -- -Ed Falk, [EMAIL PROTECTED] http://thespamdiaries.blogspot.com/ -- http://mail.python.org/mailman/listinfo/python-list