summaryrefslogtreecommitdiffstats
path: root/Lib
diff options
context:
space:
mode:
authorRaymond Hettinger <python@rcn.com>2008-02-06 20:47:09 (GMT)
committerRaymond Hettinger <python@rcn.com>2008-02-06 20:47:09 (GMT)
commit8284c4a7fb27efd55323513572e247a895a35ae1 (patch)
tree869a19baf90ce5fe8da4b3da03f037f025bd6a85 /Lib
parentebcee3f94afabe89722b5aaea1e64f73eaed5859 (diff)
downloadcpython-8284c4a7fb27efd55323513572e247a895a35ae1.zip
cpython-8284c4a7fb27efd55323513572e247a895a35ae1.tar.gz
cpython-8284c4a7fb27efd55323513572e247a895a35ae1.tar.bz2
Fix-up the _from_iterable() method to return instances of the subclass where it is used.
In its previous form, it always returned instance of frozenset which makes this ABC nearly useless as a mixin. In its new form, it needs to be able to assume that the constructor will take a frozenset input. This will usually be true. If it is not, then only one method (this one) will need to be overriden by the subclass to let it know about the unique constructor signature. Will add info on this to the docs.
Diffstat (limited to 'Lib')
-rw-r--r--Lib/_abcoll.py7
1 files changed, 6 insertions, 1 deletions
diff --git a/Lib/_abcoll.py b/Lib/_abcoll.py
index 90a78cb..030bd7a 100644
--- a/Lib/_abcoll.py
+++ b/Lib/_abcoll.py
@@ -204,7 +204,12 @@ class Set(metaclass=ABCMeta):
@classmethod
def _from_iterable(cls, it):
- return frozenset(it)
+ '''Construct an instance of the class from any iterable input.
+
+ Must override this method if the class constructor signature
+ will not accept a frozenset for an input.
+ '''
+ return cls(frozenset(it))
def __and__(self, other):
if not isinstance(other, Iterable):