Viewing file: test_augassign.py (4.24 KB) -rw-r--r-- Select action/file-type: (+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
# Augmented assignment test.
x = 2 x += 1 x *= 2 x **= 2 x -= 8 x //= 2 x //= 1 x %= 12 x &= 2 x |= 5 x ^= 1
print x
x = [2] x[0] += 1 x[0] *= 2 x[0] **= 2 x[0] -= 8 x[0] //= 2 x[0] //= 2 x[0] %= 12 x[0] &= 2 x[0] |= 5 x[0] ^= 1
print x
x = {0: 2} x[0] += 1 x[0] *= 2 x[0] **= 2 x[0] -= 8 x[0] //= 2 x[0] //= 1 x[0] %= 12 x[0] &= 2 x[0] |= 5 x[0] ^= 1
print x[0]
x = [1,2] x += [3,4] x *= 2
print x
x = [1, 2, 3] y = x x[1:2] *= 2 y[1:2] += [1]
print x print x is y
class aug_test: def __init__(self, value): self.val = value def __radd__(self, val): return self.val + val def __add__(self, val): return aug_test(self.val + val)
class aug_test2(aug_test): def __iadd__(self, val): self.val = self.val + val return self
class aug_test3(aug_test): def __iadd__(self, val): return aug_test3(self.val + val)
x = aug_test(1) y = x x += 10
print isinstance(x, aug_test) print y is not x print x.val
x = aug_test2(2) y = x x += 10
print y is x print x.val
x = aug_test3(3) y = x x += 10
print isinstance(x, aug_test3) print y is not x print x.val
class testall:
def __add__(self, val): print "__add__ called" def __radd__(self, val): print "__radd__ called" def __iadd__(self, val): print "__iadd__ called" return self
def __sub__(self, val): print "__sub__ called" def __rsub__(self, val): print "__rsub__ called" def __isub__(self, val): print "__isub__ called" return self
def __mul__(self, val): print "__mul__ called" def __rmul__(self, val): print "__rmul__ called" def __imul__(self, val): print "__imul__ called" return self
def __div__(self, val): print "__div__ called" def __rdiv__(self, val): print "__rdiv__ called" def __idiv__(self, val): print "__idiv__ called" return self
def __floordiv__(self, val): print "__floordiv__ called" return self def __ifloordiv__(self, val): print "__ifloordiv__ called" return self def __rfloordiv__(self, val): print "__rfloordiv__ called" return self
def __truediv__(self, val): print "__truediv__ called" return self def __itruediv__(self, val): print "__itruediv__ called" return self
def __mod__(self, val): print "__mod__ called" def __rmod__(self, val): print "__rmod__ called" def __imod__(self, val): print "__imod__ called" return self
def __pow__(self, val): print "__pow__ called" def __rpow__(self, val): print "__rpow__ called" def __ipow__(self, val): print "__ipow__ called" return self
def __or__(self, val): print "__or__ called" def __ror__(self, val): print "__ror__ called" def __ior__(self, val): print "__ior__ called" return self
def __and__(self, val): print "__and__ called" def __rand__(self, val): print "__rand__ called" def __iand__(self, val): print "__iand__ called" return self
def __xor__(self, val): print "__xor__ called" def __rxor__(self, val): print "__rxor__ called" def __ixor__(self, val): print "__ixor__ called" return self
def __rshift__(self, val): print "__rshift__ called" def __rrshift__(self, val): print "__rrshift__ called" def __irshift__(self, val): print "__irshift__ called" return self
def __lshift__(self, val): print "__lshift__ called" def __rlshift__(self, val): print "__rlshift__ called" def __ilshift__(self, val): print "__ilshift__ called" return self
x = testall() x + 1 1 + x x += 1
x - 1 1 - x x -= 1
x * 1 1 * x x *= 1
if 1/2 == 0: x / 1 1 / x x /= 1 else: # True division is in effect, so "/" doesn't map to __div__ etc; # but the canned expected-output file requires that those get called. x.__div__(1) x.__rdiv__(1) x.__idiv__(1)
x // 1 1 // x x //= 1
x % 1 1 % x x %= 1
x ** 1 1 ** x x **= 1
x | 1 1 | x x |= 1
x & 1 1 & x x &= 1
x ^ 1 1 ^ x x ^= 1
x >> 1 1 >> x x >>= 1
x << 1 1 << x x <<= 1
|