from smart_pointer_member import * f = Foo() f.y = 1 if f.y != 1: raise RuntimeError b = Bar(f) b.y = 2 if f.y != 2: raise RuntimeError("Failed {} {}".format(f.y, b.y)) if b.x != f.x: raise RuntimeError if b.z != f.z: raise RuntimeError if Foo.z == Bar.z: raise RuntimeError