[Tutor] defining __init__
Danny Yoo
dyoo at hkn.eecs.berkeley.edu
Fri Jan 13 00:09:32 CET 2006
On Thu, 12 Jan 2006, Christopher Spears wrote:
> I just read about __init__ in the chapter on operator
> overloading in Learning Python. What is __init__
> exactly? Is it a special function that you can use to
> initialize attributes in an object upon creation?
Hi Chris,
Yes, that's it.
__init__'s doesn't have to do with overloading, but does have to do with
initialization. It fires off when an instance is being instantiated.
For example:
######
class Dog:
def __init__(self, name):
self.name = name
def bark(self):
return "%s says 'bow wow'" % self.name
######
When we instantiate a Dog, we pass parameters that will be used to call
__init__, and in effect, we "initialize" our dog:
###
>>> d = Dog("Ein")
>>> d.bark()
"Ein says 'bow wow'"
>>> k = Dog("Kujo")
>>> k.bark()
"Kujo says 'bow wow'"
>>> Dog()
Traceback (most recent call last):
File "<stdin>", line 1, in ?
TypeError: __init__() takes exactly 2 arguments (1 given)
###
Note that in the third call to Dog, we see that if we don't pass enough
arguments, that __init__() won't fire off properly.
Does this make sense?
More information about the Tutor
mailing list