donn wrote: > * If an Instance calls a method on another Instance of the same > class, is this still recursion? And how does this 'stack up'? I mean, > literally, on the stack. Does each instance get its own stack, or does > all the push, call, pop stuff happen in one main stack? > (I worry about recursion depth limits because svg trees can get quite > deep.)
If you call functions within functions (or methods, it doesn't matter) they consume stack space, e. g: >>> def alpha(): ... return beta() ... >>> def beta(): ... return gamma() ... >>> import random >>> def gamma(): ... return random.choice([alpha, beta, gamma])() ... >>> import sys >>> sys.setrecursionlimit(10) >>> alpha() Traceback (most recent call last): File "<stdin>", line 1, in <module> File "<stdin>", line 2, in alpha File "<stdin>", line 2, in beta File "<stdin>", line 2, in gamma File "<stdin>", line 2, in gamma File "<stdin>", line 2, in alpha File "<stdin>", line 2, in beta File "<stdin>", line 2, in gamma File "<stdin>", line 2, in beta File "<stdin>", line 2, in gamma RuntimeError: maximum recursion depth exceeded The normal recursion limit is 1000, I'm reducing it to give you a smaller traceback. Peter -- http://mail.python.org/mailman/listinfo/python-list