Joe Leonardo wrote:

Totally baffled by this…maybe I need a nap. Writing a small function to reject input that is not a list of 19 fields.

def breakLine(value):
    if value.__class__() != [] and value.__len__() != 19:
        print 'You must pass a list that contains 19 fields.'
    else:
        print 'YAY!'

If I pass:

breakLine([])

I get:

YAY!

Change your 'and' to an 'or'.

Also, change your 'value.__len__()' to 'len(value)'.

Finally, if you absolutely don't want any iterable that might work (such as a tuple), change 'value.__class__() != []' to either 'type(value) != list' or, if subclasses are okay (and they probably should be) 'not isinstance(value, list)'.

Incorporating these suggestions looks like this:

def breakLine(value):
    if not isinstance(value, list) or len(value) != 19:
        print 'You must pass a list that contains 19 fields.'
    else:
        print 'YAY!'


--
http://mail.python.org/mailman/listinfo/python-list

Reply via email to