3

我需要能够将一些应用程序“常量”编码/解码为单个变量。

最好的描述类似于 chmod 中的八进制符号,并且会像这样工作:

class Permissions(MagicalExistingClassSomewhere):
     EXECUTE = 1
     WRITE = 2
     READ = 4

a = Permissions(6)
print a
> [ Permissions.READ , Permissions.WRITE ]
a.add( Permissions.EXECUTE )
print a
> [ Permissions.READ , Permissions.WRITE , permissions.EXECUTE ]
print a.encode()
> 7
a.remove( Permissions.READ )
print a.encode()
> 3

有没有人见过可以像这样抽象所有按位运算的库?我浏览了整个 PyPi 并看到了一些专注于enumand的库bitwise,但没有真正做这类事情。

4

1 回答 1

1

在https://codereview.stackexchange.com/questions/23187/bitwise-flag-code-for-python上有一些讨论和一些源代码

它允许您设置以下标志:

# define your flags
class sec(FlagType):
  admin = 1
  read = 2
  write = 4
  usage = 8

flags = +sec.read -sec.write +sec.usage

flags.read
>>> True

很多反馈说它不是 Pythonic :)

于 2013-07-05T19:23:17.467 回答