An old experiment of mine, it might give you a clue how you can do it (actually it replaces the pygame Surface object with the SurfaceObject class):
https://python-pyknic.googlecode.com/svn/branches/pyknic-2.0/experimental/surfaceobject.py
s = SurfaceObject((400,300))
s = pygame.Surface((400,300)) so = SurfaceObject(s)