All pastes #633912 Raw Edit

Unnamed

public text v1 · immutable
#633912 ·published 2007-07-26 00:32 UTC
rendered paste body
class Reclassable(object):
    pass

def test():
    class A(Reclassable):
        def testmethod(self):
            return "A"

        def testmethod2(self):
            return "A"
    
    a1 = A()
    assert a1.testmethod() == "A"
    
    a2 = A()
    assert a2.testmethod() == "A"
    
    class B(Reclassable):
        def testmethod(self):
            return "B"
    
    a1.reclass(B)
    assert a1.testmethod() == "B"
    assert a2.testmethod() == "A"
    
    class C(A):
        def testmethod():
            return "C"
    
    c1 = C()
    assert c1.testmethod() == "C"
    assert c1.testmethod2() == "A"
    
    c2 = C()
    assert c2.testmethod() == "C"
    assert c2.testmethod2() == "A"
    
    c1.reclass(A)
    assert c1.testmethod() == "A"
    assert c1.testmethod2() == "A"
    
    class D(A):
        pass
    
    class E(Reclassable):
        def testmethod(self):
            return "E"

        def testmethod2(self):
            return "E"
    
    A.reclassall(E)
    assert a1.testmethod() == "E"
    assert a1.testmethod2() == "E"
    assert a2.testmethod() == "B"
    assert c1.testmethod() == "E"
    assert c1.testmethod2() == "E"
    assert c2.testmethod() == "C"
    assert c2.testmethod2() == "E"
    
    d = D()
    assert d.testmethod() == "E"