I am constructing a simple class to make sure I understand how classes work in Python (see below this paragraph).
It works as expected, except the __add__ redefinition. I get the following in the Python interpreter: >>> a=myListSub() >>> a [] >>> a+[5] Traceback (most recent call last): File "<stdin>", line 1, in ? TypeError: 'str' object is not callable >>> Please could you let me know where I am going wrong. I have hacked around with the code and tried googling this error message but am having difficulty finding the source of the problem. Many thanks Jon class myList: def __init__ (self,value=[]): self.wrapped=[] for x in value : self.wrapped.append(x) def __repr__ (self): return `self.wrapped` def __getattr__ (self,attrib): return getattr(self.wrapped,attrib,'attribute not found') def __len__ (self): return len(self.wrapped) def __getitem__ (self,k): return self.wrapped[k] def __add__(self,other): return self.wrapped+other class myListSub(myList): classCounter=0 def __init__ (self,value=[]): self.instanceCounter=0 myList.__init__(self,value) def __add__(self,other): myListSub.classCounter=myListSub.classCounter+1 self.instanceCounter=self.instanceCounter+1 myList.__add__(self,other) def getCounters (self): return "classCounter=%s instanceCounter=%s" % (myListSub.classCounter,self.classCounter) -- http://mail.python.org/mailman/listinfo/python-list