>>>>> "IK" == Ian Kjos <ikjos@email.uophx.edu> writes: IK> PS: This is a good argument for pre-object-death destructors IK> a'la C++. I think resources should be finalized as soon as IK> they are no longer accessable through other means. I realize IK> that there are issues to be resolved; perl does it by IK> following the law of most (!) astonishment. /me dives into IK> some documentation. Here's a 5 minute toy example... -Barry -------------------- snip snip --------------------/tmp/play.py class resource: def __init__(self, resource, func): self.__resource = resource self.__func = func def __call__(self, *args, **kws): self.__resource.acquire() try: rtn = self.__func(*args, **kws) finally: self.__resource.release() return rtn class FileResource: def __init__(self, filename): self._filename = filename self._fp = None self.firstbyte = resource(self, self.firstbyte) def acquire(self): assert self._fp is None self._fp = file(self._filename) def release(self): assert self._fp is not None self._fp.close() self._fp = None def firstbyte(self): self._fp.seek(0) return self._fp.read(1) fr = FileResource('/tmp/play.py') print 'firstbyte:', fr.firstbyte() assert fr._fp is None
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