ooom...@gmail.com wrote:
Well he was not telling you the whole story: RAII works just as well with
heap objects using smart pointers (unique_ptr and friends) which are a closer
analogy to python object references.

By that definition, *all* resource management in Python is
based on RAII[1]. The only difference is that in Python the
only way to destroy an object is to remove all references to
it, whereas in C++ you have some other options (explicit
delete, stack allocation, etc.)

However, when people talk about RAII in C++ they're
*usually* referring to stack-allocated objects. There are
various ways of getting the same effect in Python:

(a) Rely on CPython reference counting

(b) Use a with-statement

(c) Use a try-finally statement

Of these, (a) is the closest in spirit to stack-allocated
RAII in C++, but it's only guaranteed to work in current
CPython.

[1] Well, not quite -- you can use low-level OS calls to
open files, etc. But the high-level wrappers for files,
sockets, and so forth all use RAII.

--
Greg
--
https://mail.python.org/mailman/listinfo/python-list

Reply via email to