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

This commit is contained in:
Raymond Hettinger 2005-04-10 17:32:35 +00:00
parent 95ed80b0e0
commit e490502e04
2 changed files with 7 additions and 1 deletions

View file

@ -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

View file

@ -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}.