我需要能够将某些应用程序'常量'编码/解码为单个变量。
最好的描述类似于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并看到一些专注于enum
和bitwise
的库,但没有真正做到这一点。
答案 0 :(得分: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:)