[Python-3000] Generic function PEP won't make it in time
Guido van Rossum
guido at python.org
Wed Apr 25 02:01:10 CEST 2007
On 4/24/07, Bill Janssen <janssen at parc.com> wrote:
> Just to chime in...
>
> My preference would be to have "abstract" just mark classes that
> define an API, that define the "abstraction" of that particular
> interface. Not carry over meanings from Java and C++ that "abstract"
> somehow always means "partial" or "incomplete". I'd envision having
> "abstract" classes that are in fact also useful and complete
> implementations. "Abstract" methods don't really make sense (to me)
> in Python. This sounds very close to what Guido has already.
>
> Maybe "abstraction" is a better keyword than "abstract".
>
> Maybe it makes sense to have "abstraction" classes, and an
> "@ignorethismethod" decorator to mark methods that are *not* part of
> the abstraction, instead of "@abstractmethod" decorators to mark the
> methods that *are* part of the abstraction.
Hm, but sometimes characteristic methods are abstract, and in other
cases they are concrete. For exampe:
class Iterator(Iterable):
@abstract
def __next__(self):
raise StopIteration
def __iter__(self): # This is abstract in Iterable, but concrete here
return self
Both methods are part of the ABC. But only __next__ is abstract. Once
could define a perfectly valid empty iterator like this:
class EmptyIterator(Iterator):
def __next__(self):
return super(EmptyIterator, self).__next__()
--
--Guido van Rossum (home page: http://www.python.org/~guido/)
More information about the Python-3000
mailing list