In [26]:
d1 = { 'a': 1, 'b': 52 }
In [47]:
class D(object):
def __iter__(self):
print 'calling iter'
yield 'a'
yield 'b'
def keys(self):
print 'calling keys'
return ['a', 'b']
def items(self):
print 'calling items'
return [('a', 1), ('b', 52)]
def __len__(self):
print 'calling len'
return 2
def __contains__(self, key):
print 'calling contains'
return key in ['a', 'b']
def __getitem__(self, key):
if key == 'a':
return 1
if key == 'b':
return 52
raise KeyError(key)
In [49]:
d2 = D()
d2['c']
In [80]:
a1 = [2,3,5,7,11,13]
class A(object):
def __init__(self):
self.a = [2,3,5,7,11,13]
def __contains__(self, value):
return value in self.a
def __len__(self):
return len(self.a)
def __iter__(self):
for v in self.a:
yield v
def __getitem__(self, index):
print index
return self.a[index]
In [84]:
a2 = A()
s = slice(2,5)
a1[s]
Out[84]: