I just finished downloading the Python Methods Product tarball, and after playing around with it for a while, I am totally confused. I'm hoping someone can help straighten me out...
 
Are the Python Methods you create supposed to be methods or functions?
 
For example, if I enter:
 
Parameter list: self
 
Body: return self.id
 
I get the error message:
   Error Type: TypeError
   Error Value: len() of unsized object
 
If I change the parameter list to: 'self,a=1' the method is defined successully (note that 'self,a' gets the same error as above).
 
If I then click on 'TryIt', I get the name of the folder containing the Python Method (as I was hoping).
 
Now, if I use <dtml-var myMethod> in a DTML method, I get the same result as 'TryIt'. But if I use <dtml-var "myMethod('xxx')">, I get the error:

   Error Type: AttributeError
   Error Value: 'string' object has no attribute 'id'

which makes sense if it is a function, since 'xxx' gets bound to 'self' instead of 'a'. But then why does it work like a method when no args are passed? I just noticed that <dtml-var "myMethod(a='xxx')"> seems to work correctly.

I'm not really a Zope or Python expert, so I don't know if I'm dealing with a bug or a problem in my understanding. Any help explaining these phenomena will be appreciated.

Also, it would be nice if the 'TryIt' tab allowed you to enter arguments, like a Z SQL Method does. It would really help trying out methods which take arguments, without having to write a DTML method/document first. Just a future wish list item :-)

Dave Morrill