def __getitem__(self, key): return self.data[key]
f["name"]
def __setitem__(self, key, item): self.data[key] = item
f.__setitem__("genre", 31)
f["genre"] = 32
def __repr__(self): return repr(self.data)
def __cmp__(self, dict):
if isinstance(dict, UserDict):
return cmp(self.data, dict.data)
else:
return cmp(self.data, dict)
def __len__(self): return len(self.data)
def __delitem__(self, key): del self.data[key]
Special methods mean that any class can store key/value pairs like a dictionary, just by defining the __setitem__ method. Any class can act like a sequence, just by defining the __getitem__ method. Any class that defines the __cmp__ method can be compared with ==. And if your class represents something that has a length, don't define a GetLength method; define the __len__ method and use len(instance).
Reference: http://www.diveintopython.net/object_oriented_framework/special_class_methods2.html