Bind an instance of a base to a subclass - can this be done?
Diez B. Roggisch
deets at nospam.web.de
Wed May 24 16:04:07 EDT 2006
Lou Pecora schrieb:
> I've been scanning Python in a Nutshell, but this seems to be either
> undoable or so subtle that I don't know how to do it.
>
> I want to subclass a base class that is returned from a Standard Library
> function (particularly, subclass file which is returned from open). I
> would add some extra functionality and keep the base functions, too.
> But I am stuck.
>
> E.g.
>
> class myfile(file):
> def myreadline():
> #code here to return something read from file
>
> Then do something like (I know this isn't right, I'm just trying to
> convey the idea of what I would like)
>
> mf=myfile()
>
> mf=open("Afile","r")
>
> s=mf.myreadline() # Use my added function
>
> mf.close() # Use the original file function
>
>
> Possible in some way? Thanks in advance for any clues.
Nope, not in that way. But you might consider writing a proxy/wrapper
for an object. That looks like this (rouch sketch from head):
class FileWrapper(object):
def __init__(self, f):
self._f = f
def __getattr__(self, name):
return getattr(self._f, name)
def myreadline(self):
....
Then you do
f = FileWrapper(open(name, mode))
Diez
More information about the Python-list
mailing list