Python具有通常的按位运算符,如~
,&
,|
等,以及+=
,&=
等就地运算符。简化表达式,如:
a = a & 34234
a = a + 577
要:
a &= 34234
a += 577
尽管补码运算符~
是一元函数,并且没有遵循相同的结构,因为它没有与两个值一起使用(如a
和34234
),用其他类型的算子简化这些?
a = ~a # not bad at all
# Still easy to code but seems redundant
self.container.longVariableName.longName = ~self.container.longVariableName.longName
答案 0 :(得分:3)
这是令人难以置信的模糊,但是:
self.container.longVariableName.longName ^= -1
完成工作,只要您处理的值是整数。需要“整数”,以便~
和^
运算符之间存在可利用的数学关系。
为什么会这样:
答案 1 :(得分:2)
如果您只关心对象实例的属性这样做,您可以编写如下方法:
def c(obj, atr):
setattr(obj,atr,~getattr(obj,atr))
然后像:
一样使用它c(self.container.longVariableName, 'longName')
我认为@TimPeters的回答要好得多,但我认为如果对将来需要用非整数执行此操作的人有用,我很乐意只使用即时属性