1
2class test(object):
3    a = 1
4t = test()
5
6def getattr2_literal_unicode(a):
7    """
8    >>> getattr2_literal_unicode(t)
9    1
10    >>> getattr2_literal_unicode(object())
11    Traceback (most recent call last):
12    AttributeError: 'object' object has no attribute 'a'
13    """
14    return getattr(a, u"a")
15
16def getattr3_literal_unicode(a, b):
17    """
18    >>> getattr3_literal_unicode(t, 2)
19    (1, 2)
20    """
21    return getattr(a, u"a", b), getattr(a, u"b", b)
22
23def getattr2_simple(a, b):
24    """
25    >>> getattr2_simple(t, 'a')
26    1
27    >>> getattr2_simple(t, 'b')
28    Traceback (most recent call last):
29    AttributeError: 'test' object has no attribute 'b'
30    """
31    return getattr(a, b)
32
33def getattr3_explicit(a, b, c):
34    """
35    >>> getattr3_explicit(t, 'a', 2)
36    1
37    >>> getattr3_explicit(t, 'b', 2)
38    2
39    """
40    return getattr3(a, b, c)
41
42def getattr3_args(a, b, c):
43    """
44    >>> getattr3_args(t, 'a', 2)
45    1
46    >>> getattr3_args(t, 'b', 2)
47    2
48    """
49    return getattr(a, b, c)
50