[Python-3000] Generic function PEP won't make it in time (original) (raw)
Christian Heimes lists at cheimes.de
Fri Apr 27 19:28:00 CEST 2007
- Previous message: [Python-3000] Generic function PEP won't make it in time
- Next message: [Python-3000] Generic function PEP won't make it in time
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
Phillip J. Eby wrote:
As someone with more recent background in Java than C++, I find the idea of abstract methods having an executable implementation to be quite confusing, and suspect that other people with that Java or C# background will do the same thing. That is, skim the explanation and miss the significant difference between the C++ way and what they're used to.
From the naive point of view from somebody with less background knowledge about ABCs, abstract methods and generics I expect that
an abstract class can't be instantiated. An abstract class must be sub-classed before it can be instantiated.
an abstract method has no implementation and simply raises a NonImplementedError based exception.
a class with abstract methods is automatically an abstract class unless generics are entering the game of class creation. When a generic overwrites an abstract method the class is a concrete class but when the abstract method is called an exception is raised.
class AbstractEgg(abstract=True): """Abstract class, cannot be instantiated """ def egg(self, foo): pass
or:
@abstract class AbstractEgg: pass
class Egg(AbstractEgg): """Subclass can be instantiated """
class AbstractSpam: """Abstract class because it contains an abstract method """ @abstract def egg(self, foo): pass
class Spam(AbstractSpam): """Still an abstract method because it doesn't overwrite egg() """
class GenericSpam(AbstractSpam): """Subclass can be instantiated
I'm not sure about the @generic syntax but it's just an example
"""
@generic(int)
def egg(self, foo):
pass
gs = GenericSpam()
This works:
gs.egg(1)
This raises an AbstractMethodException(NotImplementedException)
gs.egg('foo')
Just my 5 cents from an ordinary Python user who is trying to learn ABCs and generics.
Christian
- Previous message: [Python-3000] Generic function PEP won't make it in time
- Next message: [Python-3000] Generic function PEP won't make it in time
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]