[Python-ideas] issubclass(collections.OrderedDict, collections.Sequence)
Guido van Rossum
guido at python.org
Mon Oct 6 19:35:36 CEST 2014
On Mon, Oct 6, 2014 at 1:10 AM, Ram Rachum <ram at rachum.com> wrote:
> Here are a couple:
>
> - I'm making a combinatorics package, and a combination space needs to
> have a __contains__ method that takes a combination and returns whether
> it's part of a set. Since a combination, unlike a permutation, has no
> order, I like to have my combinations be canonicalized in a sorted order.
> For example, in a combination space of 3 items on range(4), (0, 1, 3) would
> be a combination in that space, but (3, 1, 0) would not because it's not
> sorted. (It's a k-permutation but not a combination.) However, if the user
> does `{0, 1, 3} in comb_space` I still want to return True, regardless of
> whether the set iterator happens to give these items in order or not.
>
So how are you writing this code today? In the following case, what's in
the then or else branch?
if not isinstance(x, collections.Ordered):
<what???>
else:
<what???>
Even if you could write this, how would you know that an ordered argument
is in the *canonical* order?
- For the same package, I'm defining `Tally` and `OrderedTally` classes.
> (Simliar to `Counter` except without having an identity crisis between
> being a dict subclass and counter; mine are strictly counters.) In the
> tests I want to easily see whether the class I'm testing is the ordered one
> or not, so I'll know to run appropriate tests. (There are also
> `FrozenTally` and `FrozenOrderedTally` so it's not just one class.) I could
> set `is_ordered = True` on them or give them some base class, but I think a
> general `collections.Ordered` abstract base class would be the best
> solution.
>
Same question.
--
--Guido van Rossum (python.org/~guido)
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/python-ideas/attachments/20141006/e4c34250/attachment.html>
More information about the Python-ideas
mailing list