castironpi wrote:
On Jul 8, 2:25 pm, Terry Reedy <[EMAIL PROTECTED]> wrote:

Compare to an imaginary "set of ints" data type:

a= setofints( [ 0, 1, 2 ] )

Then, the semantics of

b= setofints( [ 0, 1 ] )
b in a
True

are consistent and predictable.  Correct me if I'm wrong.

If you defined a subclass setofints of set with members restricted to being integers, so that [0,1] could not be a member, then you could (sensibly, in my opinion) override __contains__ to make the above work.

On the other hand, 'b in a' as a synonym for 'b is a subset of a' is already available for general sets as b.issubset(a). So I would not do the work of subclassing just to abbreviate this call, but only if I wanted the membership guard.

Also, the transition from 'int in setofints' to 'setofints in setofints' is not as smooth as the transition from 'length-1 string in string' to 'length-n string in string' because of the need to test and switch on whether the object tested is an int or setofints.

Tuples and lists do not have a subsequence find or test method. However, if I wanted one (and I expect I will sometime), I would probably write a general function for sequence in sequence, without bothering with restricting sequence membership.

Terry Jan Reedy

--
http://mail.python.org/mailman/listinfo/python-list

Reply via email to