Why bool( object )?
Steven D'Aprano
steve at REMOVE-THIS-cybersource.com.au
Fri May 1 05:44:23 EDT 2009
On Fri, 01 May 2009 01:56:50 -0700, Paul Rubin wrote:
> Steven D'Aprano <steve at REMOVE-THIS-cybersource.com.au> writes:
>> (2) Why assume that a, b and c are sequences with a fast __len__
>> method? They might be (say) linked lists that take O(N) to calculate
>> the length, or binary trees that don't even have a length, but can be
>> iterated over.
>
> Why assume they have a bool method? Or a __or__ operator?
What programming language are you using?
I'm using Python, where objects don't require either a bool or __or__
method (not operator) to work with the or operator.
>>> hasattr(None, '__or__') or hasattr(None, '__bool__') or \
... hasattr(None, '__nonzero__')
False
>>>
>>> x = object()
>>> hasattr(x, '__or__') or hasattr(x, '__bool__') or \
... hasattr(x, '__nonzero__')
False
>>>
>>> None or x
<object object at 0xb7f3b4f0>
Any object can be used as an operand to the boolean operators.
> Eh.
>
> for seq in [a,b,c]:
> if sum(1 for x in imap(do_something_with, seq)) > 0:
> break
Did I stumble into an Obfuscated Python competition?
--
Steven
More information about the Python-list
mailing list