Lie Ryan wrote: > On 07/05/10 22:23, Adam Bark wrote: > >> >> I should add that this is how something like: >> >> if x != y: >> do_something() >> >> works, if expects a True or False (this isn't always true but works for >> comparison operators expressions such as this). >> > > <nit> "if" expects an expression that can be converted to True or False > by calling its __bool__()/__nonzero__(); in case of missing > __bool__/__nonzero__, then the object is considered True. </nit>
<meta:nit>Don't forget about __len__()</meta:nit> >>> class A: ... def __init__(self, n): self.n = n ... def __len__(self): return self.n ... >>> "yes" if A(1) else "no" 'yes' >>> "yes" if A(0) else "no" 'no' Bonus: >>> "yes" if A(-1) else "no" Traceback (most recent call last): File "<stdin>", line 1, in <module> ValueError: __nonzero__ should return >= 0 Peter _______________________________________________ Tutor maillist - Tutor@python.org To unsubscribe or change subscription options: http://mail.python.org/mailman/listinfo/tutor