setting attributes on external types (was Re: eof)
samwyse
samwyse at gmail.com
Sat Nov 24 05:24:53 EST 2007
On Nov 23, 2:06 am, greg <g... at cosc.canterbury.ac.nz> wrote:
> There's a fair amount of overhead associated with providing
> the ability to set arbitrary attributes on an object, which
> is almost never wanted for built-in types, so it's not
> provided by default.
>
> You can easily get it if you want it by defining a Python
> subclass of the type concerned.
Speaking of which, I've got a big file:
>>> input = open('LoTR.iso')
I'd like to get the md5 hash of the file:
>>> import md5
>>> m = md5.new()
I've also got this nifty standard module which will allow me, among
other things, to copy an arbitrary file:
>>> import shutil
I'd like to say copy the file to my object, but it doesn't quite work:
>>> shutil.copyfileobj(input, m)
Traceback (most recent call last):
File "<pyshell#20>", line 1, in <module>
shutil.copyfileobj(source, m)
File "C:\Python25\lib\shutil.py", line 24, in copyfileobj
fdst.write(buf)
AttributeError: '_hashlib.HASH' object has no attribute 'write'
No problem, I'll just add an attribute:
>>> setattr(m, 'write', m.update)
Traceback (most recent call last):
File "<pyshell#15>", line 1, in <module>
setattr(m, 'write', m.update)
AttributeError: '_hashlib.HASH' object has no attribute 'write'
Anyone have an example of how to efficiently do this? Thanks!
More information about the Python-list
mailing list