On Dé Céadaoin, Ean 26, 2005, at 11:46 America/Chicago, Steven Bethard wrote:

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 wrote:


- 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 attribute. However,
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 solution?

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 only.

Thanks for more ideas,

Christian

--
http://mail.python.org/mailman/listinfo/python-list

Reply via email to