[Tutor] subclass problem: __names and type-checking
Brian van den Broek
broek at cc.umanitoba.ca
Sun Oct 9 23:09:05 CEST 2005
Python said unto the world upon 2005-10-08 12:32:
Thanks for the response, Llyod. (And to Alan, too.)
> I think that a sub-class *needs* to support the same programming
> interface as the parent class.
<snip>
> If B inherits from A then every context where A or an A instance appears
> should work correctly with B or a B instance. Since the B constructor
> *requires* more arguments, it violates that ideal. In other words, it
> would be OK to allow additional arguments. It is not OK to require
> them.
The code I posted was an abstracted example. What I actually have is a
base class with 2 arguments with default values and the subclass
having those 2 (different defaults) and two more, again with defaults.
So, unless I misunderstand, what I have meets the ideal here.
> In other words sub-class should really be a different class that adapts
> or possibly acts as a proxy for the _BaseClass. Obviously you have
> picked names that presuppose inheritance.
>
> I've abused inheritance in the past in an attempt to reuse code and have
> usually regretted it.
My actual context is a pretty central case of inheritance, I think.
I'm making a Counter class will all sorts of bells and whistles that
I've found myself deploying in other programs. Counter inherits from a
sparse _Basic_Counter class. _Basic_Counter gives the common minimal
interface I want, while not including the CPU-cycle consuming bells
added in the subclass Counter.
I'm doing things like this because usually the cpu-cycles for the
bells won't matter. But, with _Basic_Counter, for the cases where I do
want something more efficient, the basic interface will remain the same.
So, I believe that your good advice was already being headed. Thanks,
though!
Brian vdB
More information about the Tutor
mailing list