| f | class Borg: | f | class Borg: |
| _values = [] | | _values = [] |
| | | |
| def __init__(self, value=0): | | def __init__(self, value=0): |
| self._id = len(Borg._values) | | self._id = len(Borg._values) |
| Borg._values.append(value) | | Borg._values.append(value) |
| | | |
| def __str__(self): | | def __str__(self): |
| v = Borg._values[self._id] | | v = Borg._values[self._id] |
| if v == int(v): | | if v == int(v): |
| return str(int(v)) | | return str(int(v)) |
| return str(v) | | return str(v) |
| | | |
| def __iter__(self): | | def __iter__(self): |
| return (v for v in Borg._values if v is not None) | | return (v for v in Borg._values if v is not None) |
| | | |
| def __iadd__(self, other): | | def __iadd__(self, other): |
| vals = Borg._values | | vals = Borg._values |
| for i, v in enumerate(vals): | | for i, v in enumerate(vals): |
| if v is not None: | | if v is not None: |
| vals[i] = v + other | | vals[i] = v + other |
| return self | | return self |
| | | |
| def __isub__(self, other): | | def __isub__(self, other): |
| vals = Borg._values | | vals = Borg._values |
| for i, v in enumerate(vals): | | for i, v in enumerate(vals): |
| if v is not None: | | if v is not None: |
| vals[i] = v - other | | vals[i] = v - other |
| return self | | return self |
| | | |
| def __del__(self): | | def __del__(self): |
| if 0 <= self._id < len(Borg._values): | | if 0 <= self._id < len(Borg._values): |
| Borg._values[self._id] = None | | Borg._values[self._id] = None |
| t | | t | 'a, b, c = Borg(5), Borg(10), Borg(16)\nprint(a, b, c)\nprint(*a)\nb += |
| | | 10\nc -= 1\nprint(*a)\ndel b\nprint(*a)' |