922503b16cf1d5464892398bc1fa98ffad003d90
[cython.git] / tests / run / attr.pyx
1 __doc__ = u"""
2     >>> class Test(object):
3     ...     def __init__(self, i):
4     ...         self.i = i
5     >>> b = Test(1)
6     >>> b.spam = Test(2)
7     >>> b.spam.eggs = Test(3)
8     >>> b.spam.eggs.spam = Test(4)
9     >>> b.spam.eggs.spam.eggs = Test(5)
10
11     >>> a = f(b)
12     >>> a.i
13     2
14     >>> b.i
15     1
16     >>> a.spam.i
17     1
18     >>> b.spam.i
19     2
20     >>> a.spam.eggs.i
21     Traceback (most recent call last):
22     AttributeError: 'Test' object has no attribute 'eggs'
23     >>> b.spam.eggs.i
24     3
25     >>> a.spam.spam.i
26     2
27     >>> b.spam.spam.i
28     1
29     >>> a.spam.eggs.spam.i
30     Traceback (most recent call last):
31     AttributeError: 'Test' object has no attribute 'eggs'
32     >>> b.spam.eggs.spam.i
33     4
34
35     >>> a = g(b)
36     >>> a.i
37     3
38     >>> b.i
39     1
40     >>> a.spam.i
41     4
42     >>> b.spam.i
43     2
44     >>> a.spam.eggs.i
45     1
46     >>> b.spam.eggs.i
47     3
48     >>> a.spam.spam.i
49     Traceback (most recent call last):
50     AttributeError: 'Test' object has no attribute 'spam'
51     >>> b.spam.spam.i
52     1
53     >>> a.spam.eggs.spam.i
54     2
55     >>> b.spam.eggs.spam.i
56     4
57 """
58
59 def f(b):
60     a = b.spam
61     a.spam = b
62     return a
63
64 def g(b):
65     a = b.spam.eggs
66     a.spam.eggs = b
67     return a