On Wed, Jun 8, 2011 at 1:09 PM, Cathy James <nambo...@gmail.com> wrote: > I am almost there, but I need a little help: > > I would like to > > a) print my dogs in the format index. name: breed as follows: > > 0. Mimi:Poodle > 1.Sunny: Beagle > 2. Bunny: German Shepard > I am getting > > (0, ('Mimi', 'Poodle')) . Mimi : Poodle instead-what have I done wrong? > > b) I would like to append to my list, but my line dogs.dogAppend() is > giving a TypeError: > > for i in enumerate (self.dogAppend()): > TypeError: 'list' object is not callable > > Any help? > > #MY CODE BELOW: > > import sys > class Dog(): > def __init__(self, name, breed): > self.name = name > self.breed = breed > > def dogAppend(self): > self.dogAppend = [] > self.dogAppend.append((self.name,self.breed)) > return self.dogAppend >
In Python, everything is an object. And when we say everything, we really do mean everything. A function is an object too. So when you do self.dogAppend = [], you're replacing self.dogAppend (the function object) with a list. > > def display (self): > for i in enumerate (self.dogAppend()): I don't know what you're trying to do here, because this makes no sense. dogAppend is going to return a list of a single object, so it's going to be 0 every time. And enumerate returns two things: the index and the object. Since you only specified one variable, you get the tuple of (index, object) which is what you're seeing. You're supposed to do : for i, dog in enumerate(a_list_of_all_the_dogs) : print (i,".", dog.name, ": " + dog.breed) for what you're trying to get. > > if __name__ == "__main__": > dogs = Dog(name=input (" Enter Dog Name: "), breed=input ("Enter > Dog Breed: ")) > while not dogs: > print("Goodbye!!") > sys.exit() > else: > #dogs.dogAppend() > dogs.display() > -- > http://mail.python.org/mailman/listinfo/python-list > -- http://mail.python.org/mailman/listinfo/python-list