OOP / language design question

2006-04-25 Thread cctv . star
I was wondering, why you always have to remember to call bases'
constructors explicitly from the derived class constructor? Why hasn't
this been enforced by the language?

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


Re: OOP / language design question

2006-04-25 Thread cctv . star
Diez B. Roggisch wrote:
> I have another question for you: why does JAVA enforce that a constructor of
> a base-class must be called prior to everything else in the derived class's
> constructor?
Well, I can imagine it's done to make sure that the base(s) are
properly constructed. Sound s sensible to me.

> No way to do some computing for parameters that I want to pass
> to the parent constructor...

Try this:

Derived::Dreived() : Base(calcParam1(), calcParam2())
...

> Besides, this automatically base-constructor-calling only happens for the
> most trivial of cases - the no-argument-constructors.

Well, the language can at least ensure that theconstructor is called -
i.e. either call it automatically if it can be called without
parameters, or fail with error.

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


Re: OOP / language design question

2006-04-25 Thread cctv . star

Heiko Wundram wrote:
> Because sometimes you don't want to call the base classes constructors?
Sounds strange to me at the moment, but I'll try to adjust to this
thought.

> Python zen says: "Better explicit than implicit," and in this case it hits
> the nail on the head. Better to see right away what your code does (the
> explicit call to the base class), than to have to work around calling a bases
> constructor if you don't want to call it.
Thanks, that explains it somehow - at least, it's consistent with
explicit "self".
I think I'll need some shift in thinking after C++.

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