The exception you report looks incomplete: there should be something after the 'no attribute' saying which attribute lookup failed. In any case, I don't thing this is a bug. It sounds like a result of the unpredictability of cleanup order at interpreter shutdown: you're encountering a situation where the 'Person' reference has already been deleted from the module namespace before the __del__ method for one of the Person instances gets called; so the 'Person' name lookup in the __del__ method fails. You could get around this by replacing 'Person' with 'type(self)' in __del__.