Question about subclassing - version 2
Bruno Desthuilliers
onurb at xiludom.gro
Fri Sep 8 10:30:35 EDT 2006
Frank Millman wrote:
> Bruno Desthuilliers wrote:
>> Frank Millman wrote:
>>> bearophileHUGS at lycos.com wrote:
>>>> There aren't abstract classes in Python. They are all
>>>> concrete.
>> (snip)
>>> I use the term 'abstract class' in the abstract sense :-)
>>>
>>> Say I have three classes where 90% of the attributes and methods are
>>> common. It makes sense to create a base class with these attributes and
>>> methods, and turn each of the three classes into a subclass which
>>> inherits from the base class and overrides the bits that are unique to
>>> each one.
>>>
>>> This is what I call an abstract class. Maybe there is a more correct
>>> term.
>> Depends if instanciating this base class would make any sense.
>>
>
> It would not make sense, no.
>
> I have not gone to the trouble of raising NotImplementedError - the
> methods that the subclasses *must* override just have a 'pass'
> statement. I guess it would be more correct to raise the error, as it
> would give me a quicker indication of an error if I happened to omit
> one, but in practice I would find out pretty quickly anyway.
Mmm... My own experience is that methods that *must* be redefined are
better raising NotImplementedError. Makes things more obvious IMHO.
Now there are of course methods that are only provided as hooks - here
it's ok to have some no-op default behaviour.
My 2 cents
> Frank
>
--
bruno desthuilliers
python -c "print '@'.join(['.'.join([w[::-1] for w in p.split('.')]) for
p in 'onurb at xiludom.gro'.split('@')])"
More information about the Python-list
mailing list