Re: __init__() not called automatically
Available news archives: comp.lang.tcl - comp.lang.python - comp.security.firewalls - sci.crypt - comp.lang.php - comp.lang.javascript
Google
 
Web news.hping.org


comp.lang.python archive

Re: __init__() not called automatically

From: Paul McNett <p@ulmcnett.com>
Date: Thu May 26 2005 - 06:55:52 CEST

Sriek wrote:
> hi,
> i come from a c++ background. i ws happy to find myself on quite
> familiar grounds with Python. But, what surprised me was the fact that
> the __init__(), which is said to be the equivlent of the constructor in
> c++, is not automatically called.

What do you mean by automatically? :

Python 2.4.1 (#2, May 5 2005, 09:45:41)
[GCC 4.0.0 20050413 (prerelease) (Debian 4.0-0pre11)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> class A(object):
... def __init__(self):
... print "in __init__"
...
>>> a = A()
in __init__

So __init__ is definitely called upon instantiation. It is true that if
you derive from A and override __init__, A.__init__ won't be called
unless done so explicitly like:

class B(A):
        def __init__(self):
                print "in B.__init__()"
                super(B, self).__init__()

> I'm sure there must be ample reason
> for this. I would like to know why this is so? This is my view is more
> burden on the programmer.

It isn't that much practical burden, and IMO it makes perfect sense.
When you override a method of a class, you want to have to explicitly
call superclass code, not have it run automatically, else you lose
control of the flow.

> Similarly, why do we have to explicitly use the 'self' keyword
> everytime?

This is closer to a wart, IMO, but once you've used Python for a while
you'll come to understand why this is so. Basically, everything in
Python is either a namespace or a name in a namespace. In the case of
the self reference which Python sends as the first arg automatically,
the method needs to bind that to a local name which is, by convention
only, 'self'.

> Every kind of help would be welcome.

You've found the right place to hang out. Welcome!

-- 
pkm ~ http://paulmcnett.com
Received on Thu Sep 29 16:14:03 2005