Don't ask why I'm developing products for Zope 2.7 but I had to and I should have been more careful with these oldtimers.
I kept getting this error:
TypeError: expected 2 arguments, got 1
(notice the strange double space after the : colon)
This is different from the standard python TypeError when you get the parameters wrong which looks like this TypeError: __init__() takes exactly 2 arguments (1 given)
.
The line it complained this happened looked like this:
class MyTool(SimpleItem, UniqueObject, OtherClass):
id = 'some_tool'
meta_type = 'some meta type'
def __init__(self, id='some_tool'):
self.id = id # <--- THIS WAS THE CULPRIT LINE APPARENTLY!!
I couldn't understand what the hell was wrong on that line! Clearly it wasn't a normal Python error. Here's the explaination: That OtherClass was a new-style class inheriting from object. It looked like this:
class OtherClass(object):
...
When I changed that to:
class OtherClass:
...
The whole thing started to work. Long lesson learnt, don't use new-style classes mixed in into Zope 2.7.
Comments