1class Base(object):
2    '''
3    >>> base = Base()
4    >>> print(base.noargs())
5    Base
6    >>> print(base.int_arg(1))
7    Base
8    >>> print(base._class())
9    Base
10    '''
11    def noargs(self):
12        return "Base"
13    def int_arg(self, i):
14        return "Base"
15    @classmethod
16    def _class(tp):
17        return "Base"
18
19
20class Derived(Base):
21    '''
22    >>> derived = Derived()
23    >>> print(derived.noargs())
24    Derived
25    >>> print(derived.int_arg(1))
26    Derived
27    >>> print(derived._class())
28    Derived
29    '''
30    def noargs(self):
31        return "Derived"
32    def int_arg(self, i):
33        return "Derived"
34    @classmethod
35    def _class(tp):
36        return "Derived"
37
38
39class DerivedDerived(Derived):
40    '''
41    >>> derived = DerivedDerived()
42    >>> print(derived.noargs())
43    DerivedDerived
44    >>> print(derived.int_arg(1))
45    DerivedDerived
46    >>> print(derived._class())
47    DerivedDerived
48    '''
49    def noargs(self):
50        return "DerivedDerived"
51    def int_arg(self, i):
52        return "DerivedDerived"
53    @classmethod
54    def _class(tp):
55        return "DerivedDerived"
56
57
58class Derived2(Base):
59    '''
60    >>> derived = Derived2()
61    >>> print(derived.noargs())
62    Derived2
63    >>> print(derived.int_arg(1))
64    Derived2
65    >>> print(derived._class())
66    Derived2
67    '''
68    def noargs(self):
69        return "Derived2"
70    def int_arg(self, i):
71        return "Derived2"
72    @classmethod
73    def _class(tp):
74        return "Derived2"
75