[Python-Dev] Cleaning-up the new unittest API
exarkun at twistedmatrix.com
exarkun at twistedmatrix.com
Tue Nov 2 18:17:38 CET 2010
On 04:29 pm, fuzzyman at voidspace.org.uk wrote:
>On 02/11/2010 16:23, Terry Reedy wrote:
>>On 11/2/2010 10:05 AM, C. Titus Brown wrote:
>>>...but, as someone who has to figure out how to teach stuff to CSE
>>>undergrads
>>>(and biology grads) I hate the statement "...any programmer should
>>>expect this..."
>>
>>And indeed I (intentionally) did not say that. People who are ignorant
>>and inexperienced about something should avoid making expectations in
>>any direction until they have read the doc and experimented a bit.
>Expectations come from consistent behaviour. sorted behaves
>consistently for *most* of the built-in types and will also work for
>custom types that provide a 'standard' (total ordering) implementation
>of __lt__.
>
>It is very easy to *not realise* that a consequence of sets (and
>frozensets) providing partial ordering through operator overloading is
>that sorting is undefined for them.
Perhaps. The documentation for sets says this, though:
Since sets only define partial ordering (subset relationships), the
output of the list.sort() method is undefined for lists of sets.
>Particularly as it still works for other mutable collections. Worth
>being aware that custom implementations of standard operators will
>break expectations of users who aren't intimately aware of the problem
>domains that the specific type may be created for.
I can't help thinking that most of this confusion is caused by using <
for determining subsets. If < were not defined for sets and people had
to use "set.issubset" (which exists already), then sorting a list with
sets would raise an exception, a much more understandable failure mode
than getting back a list in arbitrary order.
Jean-Paul
More information about the Python-Dev
mailing list