[Python-ideas] IntFlags
Neil Girdhar
mistersheik at gmail.com
Wed Mar 4 16:51:21 CET 2015
For ~, I suggest either having an extra bit on the object that remembers
negation or replacing the patterns a &= ~b with a.clear_flags(b) and a & ~b
with a.without_flags(b) or something like that.
On Tuesday, March 3, 2015 at 10:54:15 AM UTC-5, Serhiy Storchaka wrote:
>
> Enum and IntEnum classes allow constants to have nice str() and repr()
> representations.
>
> >>> socket.AF_INET
> <AddressFamily.AF_INET: 2>
> >>> socket.socket()
> <socket.socket fd=3, family=AddressFamily.AF_INET,
> type=SocketKind.SOCK_STREAM, proto=0, laddr=('0.0.0.0', 0)>
>
> But when integer constants are flags that should be ORed, IntEnum
> doesn't help, because the result of bitwise OR of two IntEnum instances
> is int, and this value can't be represented as IntEnum.
>
> We need new type IntFlags. It is like IntEnum, but has differences:
>
> 1. The value of an instance should be not limited to the set of
> predefined constants. It can be a combination of predefined constants or
> even arbitrary integer.
>
> 2. The result of "|", "&" and "~" operators for IntFlags arguments
> should be an instance of the same IntFlags subclass.
>
> 3. It should have nice str() and repr().
>
> >>> print(stat.S_IROTH | stat.S_IWOTH)
> stat.S_IROTH|stat.S_IWOTH
> >>> stat.S_IROTH | stat.S_IWOTH
> <StatFlags.S_IROTH|S_IWOTH: 6>
>
> Any thoughts?
>
> _______________________________________________
> Python-ideas mailing list
> Python... at python.org <javascript:>
> https://mail.python.org/mailman/listinfo/python-ideas
> Code of Conduct: http://python.org/psf/codeofconduct/
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/python-ideas/attachments/20150304/66ee3ce4/attachment-0001.html>
More information about the Python-ideas
mailing list