[Python-Dev] metaclass insanity (original) (raw)
Guido van Rossum guido@python.org
Tue, 05 Nov 2002 12:00:45 -0500
- Previous message: [Python-Dev] metaclass insanity
- Next message: [Python-Dev] Metaclass insanity - another use case
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
Keeping a definition of some X (whether X is a class, a function, whatever) as local as feasible has one obvious merit which I have already pointed out: a reader of the code need NOT ask himself "where is this X defined" when X is used, nor "how is this X used" when X is defined -- the answers become immediately obvious by the very way the code is structure... X is defined right here and used right here.
Yes. However this is counterbalanced by the distraction for the reader though when the details of X's implementation make it even a moderately large lump of code (above a couple of lines); usually these details aren't of immediate interest to the reader where X is used.
> I also think that it's better that the iterator class is > accessible to the user -- that way you can do an isinstance() > check for it, for example.
To me, that's a good reason to AVOID making the class directly accessible to the user. I find that most uses that programmers make of type-testing in Python (e.g. with isinstance) are more damaging than helpful; anything that happens to discourage such damaging practices therefore looks good to me thereby.
So use a name starting with an underscore. That's enough of a hint.
In my experience so far, I find that wrapper classes tend to be rather small -- maybe that comes from my general style.
Wrapper classes are just one example of helper classes. The argument for keeping helper classes out of the way applies broadly.
--Guido van Rossum (home page: http://www.python.org/~guido/)
- Previous message: [Python-Dev] metaclass insanity
- Next message: [Python-Dev] Metaclass insanity - another use case
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]