Benjamin Peterson <[EMAIL PROTECTED]> added the comment:

This is because y is a new-style class (because file is) and z is not.
If the return type of new-style classe's len is not an int, Python tries
to convert it, which is why that works for the first example. However,
that conversion doesn't happen in old-style classes. Try:

>>> class z(object):
...     def __init__(self, name):
...         self.f = file(name, 'r')
...     def __len__(self):
...         self.f.seek(0, 2)
...         return self.f.tell()
>>> x = z('/tmp/longfile')
>>> len(x)
[Whatever it is]

----------
nosy: +benjamin.peterson
resolution:  -> invalid
status: open -> closed

__________________________________
Tracker <[EMAIL PROTECTED]>
<http://bugs.python.org/issue2612>
__________________________________
_______________________________________________
Python-bugs-list mailing list 
Unsubscribe: 
http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com

Reply via email to