inherit without calling parent class constructor?
cdieterich at geosci.uchicago.edu
Wed Jan 26 19:59:10 CET 2005
On Dé Céadaoin, Ean 26, 2005, at 11:46 America/Chicago, Steven Bethard
> I'm confused as to how you can tell when it's avoidable... Do you
> mean you don't want to call 'method' if you don't have to? Could you
> make size a property, e.g.
> Then 'size' won't be calculated until you actually use it. If 'size'
> is only to be calculated once, you might also look at Scott David
> Daniels's lazy property recipe:
On Dé Céadaoin, Ean 26, 2005, at 12:03 America/Chicago, Daniel Dittmar
> - rename B to A
> - class B (A)
> - move the costly constructor from A to B
> - class D (A)
> You can now move some parts from B.__init__ to A.__init__ if they are
> really needed by D as well.
Thanks for the input.
Yes, I see. I should have been more specific about 'when it's
avoidable'. I guess this was part of my question: Is it avoidable?
Steven, your solution works fine, as long as I don't access the size
my instances of A use their size attributes quite often within other
methods of A (not listed in my example). So, I'd just postpone the
execution of the expensive part until later.
Daniel, maybe I should have made it clearer in my example. The
"A"-objects actually need the size attribute. If I'd outsource the size
attribute (and its computation) to a class I don't inherit from, the
"A"-objects won't have access to it. Or did I miss something in your
The size attribute only needs to be computed once and stays constant
after that. The lazy property recipe of Scott David Daniels looks
promising. I'll try that, when I've installed Python 2.4. However, I
need my package to work on machines where there is Python 2.2 and 2.3
Thanks for more ideas,
More information about the Python-list