On Apr 4, 2018, at 11:32, Ethan Furman <et...@stoneleaf.us> wrote:
> 
> (A) A standard Enum class is a container of Enum members.  It cannot hold 
> anything else.  However, it has been returning False both in cases where the 
> in-question object was an Enum of a different class (a Fruit in a Color, for 
> example) and when the in-question object was not even an Enum ('apple' in 
> Fruit, for example).
> 
> (B) The waters get even more muddied when Fruit has a str mixin, so 
> `Fruit.APPLE == 'apple' is True` -- in that case, should `'orange' in Fruit` 
> return True, False, or raise TypeError?

Are you proposing to change current behavior, and if so, what’s your 
deprecation plan?

I’m not sure I feel that the purity is important enough to change how it 
currently works, especially since you’ll have to be prepared to catch 
exceptions rather than just handle the boolean value.  OTOH, since most of my 
use cases are comparisons against explicit enum values, I’m not sure how often 
people write code to check for enum values contained in the Enum (I do it in 
one or two places where I’m deserializing the actual value object, e.g. from a 
pickle).

(FWIW, I encourage individual comparisons use `is` rather than `==`.)

> Question 2:
> ----------
> 
> (A) The new Flag type allows `in` tests on the members themselves; so, for 
> example:
> 
> --> SomeFlag.ONE in SomeFlag.One|SomeFlag.TWO
> True
> 
> The question, of course, is what to do when a non-Flag member is tested for:
> 
> --> 'apple' in SomeFlag.ONE
> # False or TypeError?
> 
> --> 2 in SomeFlag.TWO
> # True or TypeError?
> 
> (B) And, of course, the same muddier question arises with IntFlag, where 
> SomeFlag.TWO == 2 is True.

Well, now I’m confused:

Python 3.7.0b2+ (heads/3.7:f328caf4ca, Mar 26 2018, 19:57:33)
[Clang 9.0.0 (clang-900.0.39.2)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> from enum import IntFlag
>>> class Flag(IntFlag):
...   a = 1
...   b = 2
...   c = 4
...   d = 8
...
>>> 'foo' in (Flag.a|Flag.b)
True

Cheers,
-Barry


Attachment: signature.asc
Description: Message signed with OpenPGP

_______________________________________________
Python-Dev mailing list
Python-Dev@python.org
https://mail.python.org/mailman/listinfo/python-dev
Unsubscribe: 
https://mail.python.org/mailman/options/python-dev/archive%40mail-archive.com

Reply via email to