object.enable() anti-pattern
Dan Sommers
dan at tombstonezero.net
Wed May 8 22:42:01 EDT 2013
On Wed, 08 May 2013 08:52:12 +0000, Steven D'Aprano wrote:
> This is an anti-pattern to avoid. The idea is that creating a resource
> ought to be the same as "turning it on", or enabling it, or similar. For
> example, we don't do this in Python:
>
> f = file("some_file.txt")
> f.open()
> data = f.read()
So why don't we do this?
data = read("some_file.txt")
> because reading the file can fail if you forget to call open first.
> Instead, Python uses a factory function that creates the file object and
> opens it:
>
> f = open("some_file.txt") # if this succeeds, f is ready to use
> data = f.read()
That's just the "enable" paradigm in a socially acceptable and
traditional wrapper.
Opening and closing the file is an implementation detail, often defeated
by caching (application level or OS level) anyway.
Dan
More information about the Python-list
mailing list