Commit 8db45f94 authored by Raymond Hettinger's avatar Raymond Hettinger

SF bug #1179957: Missing def'n of equality for set elements

parent 1b2a5cbc
...@@ -30,7 +30,10 @@ method but omits methods which alter the contents of the set. Both ...@@ -30,7 +30,10 @@ method but omits methods which alter the contents of the set. Both
abstract class useful for determining whether something is a set: abstract class useful for determining whether something is a set:
\code{isinstance(\var{obj}, BaseSet)}. \code{isinstance(\var{obj}, BaseSet)}.
The set classes are implemented using dictionaries. As a result, sets The set classes are implemented using dictionaries. Accordingly, the
requirements for set elements are the same as those for dictionary keys;
namely, that the element defines both \method{__eq__} and \method{__hash__}.
As a result, sets
cannot contain mutable elements such as lists or dictionaries. cannot contain mutable elements such as lists or dictionaries.
However, they can contain immutable collections such as tuples or However, they can contain immutable collections such as tuples or
instances of \class{ImmutableSet}. For convenience in implementing instances of \class{ImmutableSet}. For convenience in implementing
......
...@@ -1220,6 +1220,9 @@ Accordingly, sets do not implement the \method{__cmp__} method. ...@@ -1220,6 +1220,9 @@ Accordingly, sets do not implement the \method{__cmp__} method.
Since sets only define partial ordering (subset relationships), the output Since sets only define partial ordering (subset relationships), the output
of the \method{list.sort()} method is undefined for lists of sets. of the \method{list.sort()} method is undefined for lists of sets.
Set elements are like dictionary keys; they need to define both
\method{__hash__} and \method{__eq__} methods.
Binary operations that mix \class{set} instances with \class{frozenset} Binary operations that mix \class{set} instances with \class{frozenset}
return the type of the first operand. For example: return the type of the first operand. For example:
\samp{frozenset('ab') | set('bc')} returns an instance of \class{frozenset}. \samp{frozenset('ab') | set('bc')} returns an instance of \class{frozenset}.
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment