paul@121 | 1 | #!/usr/bin/env python |
paul@121 | 2 | |
paul@121 | 3 | def e(x): pass |
paul@121 | 4 | |
paul@121 | 5 | class C: |
paul@121 | 6 | def h(self): |
paul@121 | 7 | self.m = self.f |
paul@121 | 8 | return self.m # not known |
paul@121 | 9 | def g(self): |
paul@121 | 10 | return self.f # C.f with context self |
paul@121 | 11 | def f(self): pass |
paul@121 | 12 | e = e |
paul@121 | 13 | |
paul@121 | 14 | class D: |
paul@121 | 15 | e = C.e |
paul@121 | 16 | f = C.f |
paul@121 | 17 | def g(self): |
paul@121 | 18 | return self.f # D.f with context preserved |
paul@121 | 19 | def h(self): |
paul@121 | 20 | self.m = self.f |
paul@121 | 21 | return self.m # not known |
paul@121 | 22 | |
paul@121 | 23 | class E(C): |
paul@121 | 24 | def g(self): |
paul@121 | 25 | return self.f # C.f with context self |
paul@121 | 26 | def h(self): |
paul@121 | 27 | self.m = self.f |
paul@121 | 28 | return self.m # not known |
paul@121 | 29 | |
paul@121 | 30 | C.f |
paul@121 | 31 | D.f |
paul@121 | 32 | E.f |
paul@121 | 33 | |
paul@121 | 34 | c = C() |
paul@121 | 35 | d = D() |
paul@121 | 36 | e = E() |
paul@121 | 37 | |
paul@121 | 38 | x = c.f # bound C.f == c.h() == c.g() |
paul@121 | 39 | y = d.f # unbound C.f == d.h() == d.g() |
paul@121 | 40 | z = e.f # bound E.f == e.h() == e.g() |
paul@121 | 41 | |
paul@121 | 42 | p = c.e # bound C.e |
paul@121 | 43 | q = d.e # unbound C.e |
paul@121 | 44 | r = e.e # bound E.e |
paul@121 | 45 | |
paul@121 | 46 | # vim: tabstop=4 expandtab shiftwidth=4 |