[Python-3000] pep 3124 plans
Greg Ewing
greg.ewing at canterbury.ac.nz
Wed Jul 25 04:39:06 CEST 2007
Phillip J. Eby wrote:
> At 12:54 PM 7/24/2007 +1200, Greg Ewing wrote:
>> When adding an overload to a GF, what methodology can I
>> follow to ensure that my overload doesn't interact in an
>> unfortunate way with another one somewhere else, perhaps
>> one not written by me?
>
> What methodology can you follow that ensures that same thing when
> overriding a method in a subclass?
It's dead simple -- my method always wins.
This is true even in the presence of multiple inheritance.
Problems only arise there if I use super() to make an
inherited method call (so I don't do that) or if other
people multiply inherit from me -- in which case it's
their problem, not mine.
> Okay, well I guess the above statements all put you squarely in the "OO
> is too scary" category,
Certainly not -- I don't find OO scary at all. I wouldn't
say that I find GFs "scary" either, only that I would use
them cautiously and sparingly. I don't agree that there is
no difference between the traditional OO model and GFs.
With GFs there is less static structure that you can rely
on.
>> And what if the program doesn't exist yet, because I'm
>> still thinking about how to write it? Or it exists but
>> isn't yet in a state where it can be run successfully?
>
> I don't understand what you're asking, here.
Don't you think it's important to be able to reason about
the way a program will behave while you're in the process
of designing it? If you haven't written runnable code yet,
you can't run it to get a list of method overrides.
> I was under the impression that
> under certain circumstances, if one object is "more specific" than the
> other (i.e., one is an instance of a subclass of the other's type), then
> that one gets first say.
You may be right. But the fact remains that the method called
will be a method of one class or the other -- it can't be some
function defined in an arbitrary place.
--
Greg
More information about the Python-3000
mailing list