__init__ explanation please

A.T.Hofkamp hat at se-162.se.wtb.tue.nl
Mon Jan 14 09:01:42 CET 2008

On 2008-01-13, Erik Lind <elind at spamcop.net> wrote:
> I'm new to Python, and OOP. I've read most of Mark Lutz's book and more 
> online and can write simple modules, but I still don't get when __init__ 
> needs to be used as opposed to creating a class instance by assignment. For 
> some strange reason the literature seems to take this for granted. I'd 
> appreciate any pointers or links that can help clarify this.

I think you mean the following:
You'd like to do

p = Person('me', 'here', 31)

and you are wondering why you need the __init__() function in

class Person(object):
    def __init__(self, name, addres, age):
        self.name = name
        self.address = address
        self.age = age


If so, the answer is that while you think you are doing "Person('me', 'here', 31)",
you are in reality executing "Person.__init__(self, 'me', 'here', 31)", where
'self' is refers to a shiny new, empty object created for you.

(and the 'self' is obtained by the Person.__new__ function I think, but others
here have much better knowledge about this).


More information about the Python-list mailing list