> Very interesting. But what is "duckly-typed"? I'm so dumb I can't > distinguish between a typo and a technical term.. > > Dick Moores > > Refer to the Wikipedia article on Duck Typing: http://en.wikipedia.org/wiki/Duck_typing
Basically, if you saw my example earlier of substituting stdout: #test.py class FileLikeObject(object): def __init__(self,current_stdout): self.data = [] self.oldstdout = current_stdout sys.stdout = self def write(self,arg): if arg != '\n': self.data.append(arg) def output(self): sys.stdout = self.oldstdout print self.data sys.stdout = self import sys f = FileLikeObject(sys.stdout) print "hello." f.output() print "hi" f.output() #----- sys.stdout expects a file-like object, that has methods such as 'write'. So I implemented a class with a 'write' method, and sys.stdout happily used it as an output stream. It's not the same type of object as the original sys.stdout was. From IDLE, >>> print sys.stdout <idlelib.rpc.RPCProxy instance at 0x00B403F0> So you see idle itself has replaced the default console stream of >>> print sys.stdout <open file '<stdout>', mode 'w' at 0x0097E068> with its own version, which I replaced with my own version (the class instance with the write method). All that matters is that the object has a 'write' method for it to be used as stdout (AFAIK). HTH, -Luke _______________________________________________ Tutor maillist - Tutor@python.org http://mail.python.org/mailman/listinfo/tutor