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

Your email will never ever be published.

Previous:
pwdf - a mix of ls and pwd April 7, 2008 Linux
Next:
What I like and dislike about Grok April 11, 2008 Zope
Related by category:
IssueTrackerProduct now officially abandoned March 30, 2012 Zope
'Cache-Control' or Expires September 16, 2005 Zope
To all Zope developers: Does this sound familiar? March 8, 2011 Zope
Sending HTML emails in Zope October 26, 2006 Zope
Related by keyword:
Python new-style classes and the super() function July 12, 2008 Python