Skip to content

Instantly share code, notes, and snippets.

@superbobry
Created November 8, 2012 20:48
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save superbobry/4041489 to your computer and use it in GitHub Desktop.
Save superbobry/4041489 to your computer and use it in GitHub Desktop.
Python and +=
# -*- coding: utf-8 -*-
from collections import MutableSequence
def trace(f):
def inner(*args, **kwargs):
print(f.__name__)
return f(*args, **kwargs)
return inner
class Dummy(MutableSequence):
def __init__(self, data=None):
self.data = data or []
def insert(self, n, value):
self.data.insert(n, value)
@trace
def __getitem__(self, n):
return self.data[n]
@trace
def __setitem__(self, n, value):
self.data[n] = value
def __delitem__(self, n):
del self.data[n]
def __repr__(self):
return repr(self.data)
def __iter__(self):
return iter(self.data)
def __len__(self):
return len(self.data)
d = Dummy([[]])
print(d)
d[0] += [42]
print(d)
# [[]]
# __getitem__
# __setitem__
# [[42]]
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment