In <7figv3f2m3p0...@mid.uni-berlin.de> "Diez B. Roggisch" <de...@nospam.web.de> writes:
>Classes are not scopes. This looks to me like a major wart, on two counts. First, one of the goals of OO is encapsulation, not only at the level of instances, but also at the level of classes. Your comment suggests that Python does not fully support class-level encapsulation. Second, my example shows that Python puts some peculiar restrictions on recursion. Recursion! One of the central concepts in the theory of functions! This is shown most clearly by the following elaboration of my original example: class Demo(object): def fact_rec(n): if n < 2: return 1 else: return n * fact_rec(n - 1) def fact_iter(n): ret = 1 for i in range(1, n + 1): ret *= i return ret classvar1 = fact_iter(5) classvar2 = fact_rec(5) This code won't compile as shown, but it does compile if the last line (the call to the recursive fact_rec) is commented out. There is no justification for discriminating against recursive functions in this context. Recursive functions should be OK wherever functions are OK. I can't think of any other language that allows recursion but not anywhere. Is there any good reason (from the point of view of Python's overall design) for not fixing this? kynn -- http://mail.python.org/mailman/listinfo/python-list