I hate to suggest this because I almost never use it, but have you
considered using the pdb debugger and setting a breakpoint?
Meanwhile, your problem is here:
def items(self):
"""Return an iterator over the items of the `Trie`."""
for char, node in self.root.iteritems():
if node.value is None:
yield node.items
node.items is the the Trie.items() method bound to the node object.
I think, taking a quick look at the code, you want to yield node.items(),
function call again. Looks like the same problem.
On Thu, Aug 29, 2013 at 5:17 PM, Maria McKinley <[email protected]>wrote:
> Doh. Thanks. This does the trick, but it gives me the instance location. I
> assumed this is because there is no __str__ method defined, but when I
> added a __str__ method it didn't change anything. Probably didn't implement
> the __str__ method correctly, but since I didn't even get an error, not
> sure this was even the problem. (Pretty sure, for example, that I shouldn't
> always be referencing the head node.)
>
> def __str__(self):
> return "Node letter is %s" % (self.root[0])
>
> for c in mytrie.items():
> print c
> ...:
> <bound method Trie.items of <trie.Trie instance at 0x1010dc710>>
> <bound method Trie.items of <trie.Trie instance at 0x1010dca70>>
>
> thanks again,
> Maria
>
>
> On Thu, Aug 29, 2013 at 4:40 PM, Cris Ewing <[email protected]> wrote:
>
>> I expect that the problem here is that you are attempting to iterate over
>> the method itself, rather than its result. You'd need to call the method
>> to do that:
>>
>> for c in mytrie.items():
>> print c
>>
>> hth
>>
>> c
>>
>> On Aug 29, 2013, at 4:38 PM, Maria McKinley wrote:
>>
>> Hello,
>>
>> I hope someone on this list doesn't mind answering what I think is a
>> quick question. I have been playing around with the python code found here:
>>
>> http://en.wikipedia.org/wiki/Trie#A_Python_version
>>
>> I can't get the iterator to work, and I wonder if I'm not calling it
>> correctly. I thought once I made my object, and added stuff to it, I could
>> just do this:
>>
>> for c in mytrie.items:
>> print c
>>
>> but I get this error:
>>
>> TypeError: 'instancemethod' object is not iterable
>>
>> What am I doing wrong?
>>
>> thanks,
>> Maria
>>
>>
>> Cris Ewing
>> --------------------------------------------------
>> Principal, Cris Ewing, Developer LLC
>> http://www.crisewing.com
>> [email protected]
>> 1.206.724.2112
>>
>>
>
>
> --
> Maria Mckinley
> Software Developer with Bonus SysAdmin Experience
> www.mariakathryn.net
> www.linkedin.com/in/mariamckinley
>