[Patches] [ python-Patches-580995 ] new version of Set class
noreply@sourceforge.net
noreply@sourceforge.net
Thu, 18 Jul 2002 13:27:45 -0700
Patches item #580995, was opened at 2002-07-13 17:53
You can respond by visiting:
https://sourceforge.net/tracker/?func=detail&atid=305470&aid=580995&group_id=5470
Category: Library (Lib)
Group: Python 2.3
Status: Open
Resolution: None
Priority: 5
Submitted By: Alex Martelli (aleax)
Assigned to: Nobody/Anonymous (nobody)
Summary: new version of Set class
Initial Comment:
As per python-dev discussion on Sat 13 July 2002,
subject
"Dict constructor". A version of Greg Wilson's sandbox
Set class that avoids the trickiness of implicitly freezing
a set when __hash__ is called on it. Rather, uses
several classes: Set itself has no __hash__ and
represents a
general, mutable set; BaseSet, its superclass, has all
functionality common to mutable and immutable sets;
ImmutableSet also subclasses BaseSet and adds
__hash__; a wrapper _TemporarilyImmutableSet wraps
a Set exposing only __hash__ (identical to that an
ImmutableSet built from the Set would have) and __eq__
and __ne__ (delegated to the Set instance).
Set.add(self, x) attempts to call x=x._asImmutable() (if
AttributeError leaves x alone); Set._asImmutable(self)
returns ImmutableSet(self).
Membership test BaseSet.__contains__(self, x) attempt
to call x = x._asTemporarilyImmutable() (if AttributeError
leaves x alone); Set._asTemporarilyImmutable(self)
returns TemporarilyImmutableSet(self).
I've left Greg's code mostly alone otherwise except for
fixing bugs/obsolescent usage (e.g. dictionary rather than
dict) and making what were ValueError into TypeError
(ValueError was doubtful earlier, is untenable now that
mutable and immutable sets are different types). The
change in exceptions forced me to change the unit tests
in test_set.py, too, but I made no other changes nor
additions.
----------------------------------------------------------------------
>Comment By: Alex Martelli (aleax)
Date: 2002-07-18 22:27
Message:
Logged In: YES
user_id=60314
Changed as per GvR comments so now sets have-a dict rather
than being-a dict. Made code more direct in some places (using
list comprehensions rather than loops where appropriate).
----------------------------------------------------------------------
You can respond by visiting:
https://sourceforge.net/tracker/?func=detail&atid=305470&aid=580995&group_id=5470