Unit test failing please help

John Gordon gordon at panix.com
Fri Aug 26 17:58:05 CEST 2011

In <ccbce61b-77e3-44fc-bbb8-fbd7007326dd at w28g2000yqw.googlegroups.com> lblake <treleven.lloyd at gmail.com> writes:

> Hi I am new to python I am at bit lost as to why my unit test is
> failing below is the code and the unit test:

> class Centipede(object):
>     legs, stomach

You aren't assigning any values to "legs" or "stomach" here.  From your
later code, it seems like you intend these items to start out as empty
lists.  This code might work better:

  class Centipede(object):
    legs = []
    stomach = []

(In fact, since you aren't *assigning* anything to legs or stomach but
you're simply *referencing them*, this code should have been an error
because those names do not yet exist.)

>     def __init__(self):

This __init__() method does nothing at all.  It doesn't even have a pass
statement, which means it isn't legal python.  Your code should have
produced an error here.

>       def __setattr__(self, key, value):
>         print("setting %s to %s" % (key, repr(value)))
>         if key in ([]):
>             self.legs.append(key)
>             super(Centipede, self).__setattr__(self, key,value)

How will this if statement ever be true?  You're checking if 'key' is
a member of an empty list.

John Gordon                   A is for Amy, who fell down the stairs
gordon at panix.com              B is for Basil, assaulted by bears
                                -- Edward Gorey, "The Gashlycrumb Tinies"

More information about the Python-list mailing list