[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