控制对象销毁顺序的最佳实践一
1. 通过函数控制.
2. 在 if __name__ == '__main__': pass 代码块,实例化对象,然后由解释器优化的对象销毁逻辑控制,如果不清楚解释器的对象销毁逻辑,那么销毁对象的顺序是不可控的(程序员不可控)
1.通过函数控制.
class A(object): def __init__(self): print(f"Initializing {self}") def __del__(self): print(f"Releasing {self}") class B(object): def __init__(self): print(f"Initializing {self}") def __del__(self): print(f"Releasing {self}") class C(object): def __init__(self): print(f"Initializing {self}") def __del__(self): print(f"Releasing {self}") class D(object): def __init__(self, a, b): print(f"Initializing {self}") self.a = a self.b = b def __del__(self): # del self.a # del self.b print(f"Releasing {self}") class E(object): def __init__(self, a): print(f"Initializing {self}") self.a = a def __del__(self): # del self.a print(f"Releasing {self}") class F(object): def __init__(self, a, b): print(f"Initializing {self}") self.a = a self.b = b def __del__(self): # del self.a # del self.b print(f"Releasing {self}") class Control(object): def __init__(self): print(f'Initializing {self}') self.a = A() self.b = B() self.c = C() self.f = F(self.a, self.b) self.d = D(self.a, self.b) self.e = E(self.a) def start_test(self): print(f'{self} is testing') def __del__(self): print(f"Releasing {self}") def test(): control = Control() control.start_test() if __name__ == '__main__': test() print('finished')