1# ticket: 489
2
3"""
4>>> xxx
5[0, 1, 2, 3]
6"""
7
8xxx = []
9foo = 0
10xxx.append(foo)
11def foo():
12    return 1
13xxx.append(foo())
14def foo():
15    return 2
16xxx.append(foo())
17foo = 3
18xxx.append(foo)
19
20def closure_scope(a):
21    """
22    >>> closure_scope(0)
23    [0, 1, 'X', -4, 3]
24    """
25    ret = []
26    foo = a + 0
27    ret.append(foo)
28    def foo():
29        return a + 1
30    ret.append(foo())
31    def foo():
32        return 'X'
33    ret.append(foo())
34    def foo(b):
35        return a - b
36    ret.append(foo(4))
37    foo = a + 3
38    ret.append(foo)
39    return ret
40
41class ClassScope(object):
42    """
43    >>> obj = ClassScope()
44    [0, 1, 2, 3]
45    """
46    x = []
47    def __init__(self):
48        r = []
49        for x in self.x:
50            if isinstance(x, int):
51                r.append(x)
52            else:
53                r.append(x(self))
54        print r
55    foo = 0
56    x.append(foo)
57    def foo(self):
58        return 1
59    x.append(foo)
60    def foo(self):
61        return 2
62    x.append(foo)
63    foo = 3
64    x.append(foo)
65