bizarre Recursive/class interaction

Bob Roberts bobnotbob at byu.edu
Tue Mar 11 07:28:10 CET 2003


The following code gives me an assertion error from the line
assert( not ret.data)
which means that some how ret.data is getting set to something besides
an empty list.  I don't see how this can happen since nothing is
passed into the construction of ret and ret.data defaults to an empty
list.


import UserList

def JunkRecursive(line):
    print line
    gotH = 0
    ret = MyClass()
    assert( not ret.data)
    i = 0
    while i < len(line):
        char = line[i]
        print char
        if char == "a":
            ret.append(1)
        elif char == "h":
            if not gotH:
                gotH = 1
            else:
                subList = JunkRecursive(line[i:])
                ret.append(subList)
        i += 1
    return ret

class MyClass(UserList.UserList):
    pass
    def __init__(self, data = []):
        UserList.UserList.__init__(self)
        self.data = data
        if self.data:
            print self.data


line = "haaah"
JunkRecursive(line)




This gives the output:
haaah
h
a
a
a
h
h
[1, 1, 1]
Traceback (most recent call last):
  File "junk.py", line 33, in ?
    JunkRecursive(line)
  File "junk.py", line 18, in JunkRecursive
    subList = JunkRecursive(line[i:])
  File "junk.py", line 7, in JunkRecursive
    assert( not ret.data)
AssertionError




More information about the Python-list mailing list