循環参照してしまうとそのオブジェクトはプロセスの
終了まで解放されない?

class ClassA(object):
    def __init__(self):
        import sys
        sys.stderr.write("ClassA.__init__(...) %s\n" % str(self))
    def __del__(self):
        import sys
        sys.stderr.write("ClassA.__del__(...) %s\n" % str(self))


class ClassC(object):
    def __init__(self):
        import sys
        sys.stderr.write("ClassC.__init__(...) %s\n" % str(self))
        self.a1 = ClassA()
        self.a2 = ClassA()
        self.a1.a2 = self.a2
        self.a2.a1 = self.a1

    def __del__(self):
        import sys
        sys.stderr.write("ClassC.__del__(...) %s\n" % str(self))

これで ClassC のインスタンスを作ると,
ClassA.__del__ は永遠に呼び出されない.
せめてプロセスの終了時には呼び出されると思ってた.