Oliver Schoenborn wrote: >>I'm still uncertain, though, as to what objects precisely should get >>the cleanup calls: *All* objects that have registered with the cleaner, >>or only some of them? > > > I don't see why it wouldn't be all objects. You'll have to show me an > example for when that might be the case. Each object that has registered is > saying, "I need cleanup at exit of scope, because I should be the only one > left". If you don't clean it up you are not upholding your side of the > contract. Consider this example, where X is a class that needs finally-ization, and f and g are functions that participate in the protocol: def f(): a = X() g() a.do_something() def g(): b = X() Now, when f starts, an X instance is registered with the cleaner, and this is assigned to the local variable a. Then g is invoked. This creates another X instance that is also registered with the cleaner. Then g returns, and all objects registered with the cleaner are finally-ized. At the moment, there are two objects registered with the cleaner, so they are both finally-ized. Then, g returns, and f tries to use the objects stored in a. However, that object already has been finally-ized, so the object is no longer functional. I doubt this is the intended semantics, but I don't know what the intended semantics is instead. Regards, Martin
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4