You've inadvertently used three underscores around __init__ rather than two, and therefore you are not really defining __init__ but instead are relying upon the inherited one from object (which takes no parameters).
With regard, Michael On Monday December 17, 2007, earlylight publishing wrote: > Okay I copied this code directly from a book (author Michael Dawson) and > it's not working. I'm sure I've missed something obvious like the spacing or > something but I've been staring at it for 10 minutes and I can't see it. > I'll put the code and error message below. Can someone else spot the problem? > > class Critter(object): > """A virtual pet""" > def ___init___(self, name): > print "A new critter has been born!" > self.name = name > > def __str__(self): > rep = "Critter object\n" > rep += "name: " + self.name + "\n" > return rep > > def talk(self): > print "Hi, I'm", self.name, "\n" > #main > crit1 = Critter("Poochie") > crit1.talk() > > Here's the error message: > > Traceback (most recent call last): > File "C:/Python25/attributecrit.py", line 15, in <module> > crit1 = Critter("Poochie") > TypeError: default __new__ takes no parameters _______________________________________________ Tutor maillist - Tutor@python.org http://mail.python.org/mailman/listinfo/tutor