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@123 | 14 | def test(self): |
paul@123 | 15 | self.e() |
paul@123 | 16 | self.f() |
paul@123 | 17 | self.g() |
paul@123 | 18 | self.h() |
paul@123 | 19 | |
paul@121 | 20 | class D: |
paul@121 | 21 | e = C.e |
paul@121 | 22 | f = C.f |
paul@121 | 23 | def g(self): |
paul@121 | 24 | return self.f # D.f with context preserved |
paul@121 | 25 | def h(self): |
paul@121 | 26 | self.m = self.f |
paul@121 | 27 | return self.m # not known |
paul@121 | 28 | |
paul@123 | 29 | def test(self): |
paul@123 | 30 | self.e(1) |
paul@123 | 31 | self.f(2) |
paul@123 | 32 | self.g() |
paul@123 | 33 | self.h() |
paul@123 | 34 | |
paul@121 | 35 | class E(C): |
paul@121 | 36 | def g(self): |
paul@121 | 37 | return self.f # C.f with context self |
paul@121 | 38 | def h(self): |
paul@121 | 39 | self.m = self.f |
paul@121 | 40 | return self.m # not known |
paul@121 | 41 | |
paul@123 | 42 | def test(self): |
paul@123 | 43 | self.e() |
paul@123 | 44 | self.f() |
paul@123 | 45 | self.g() |
paul@123 | 46 | self.h() |
paul@123 | 47 | |
paul@121 | 48 | C.f |
paul@121 | 49 | D.f |
paul@121 | 50 | E.f |
paul@121 | 51 | |
paul@121 | 52 | c = C() |
paul@121 | 53 | d = D() |
paul@121 | 54 | e = E() |
paul@121 | 55 | |
paul@121 | 56 | x = c.f # bound C.f == c.h() == c.g() |
paul@121 | 57 | y = d.f # unbound C.f == d.h() == d.g() |
paul@121 | 58 | z = e.f # bound E.f == e.h() == e.g() |
paul@121 | 59 | |
paul@121 | 60 | p = c.e # bound C.e |
paul@121 | 61 | q = d.e # unbound C.e |
paul@121 | 62 | r = e.e # bound E.e |
paul@121 | 63 | |
paul@121 | 64 | # vim: tabstop=4 expandtab shiftwidth=4 |