Sean,

You need a keyword argument list as well, so that the effective PyMOL
class instance (_self) can be passed in by keyword (actual use of _self
is only strictly required when you have multiple PyMOLs active in a
single Python interpreter).

# pml input:

python
 
def my_fn(*arg, **kwd):
   print arg

cmd.extend("my_fn", my_fn)

python end

my_fn my_arg_1, my_arg_2

# PyMOL output:

('my_arg_1', 'my_arg_2') 

Cheers,
Warren

________________________________

        From: Sean Law [mailto:magic...@hotmail.com] 
        Sent: Sunday, August 02, 2009 10:56 AM
        To: pymol-users@lists.sourceforge.net
        Subject: [PyMOL] Python Function with Unlimited Positional
Arguments
        
        
        Hi PyMOLers,
        
        I am trying to write a python script that will allow a user to
provide an unlimited number of positional arguments for a function.  I
am use to the following scheme for defining a function and its
arguments:
        
        def some_function ( x, y, z, file="false"):
        
        #DO SOMETHING
        
        return
        
        Where x, y, and z are required arguments and "file=false" is an
optional argument.  I came across the following page pertaining to
Python:
        
        
http://www.linuxtopia.org/online_books/programming_books/python_programm
ing/python_ch15s09.html
        
        See "Unlimited Number of Positional Arguments Values"
        
        There it explains that one could use the following syntax:
        
        def some_function ( *args):
        
            print arg[0]
        
        return
        
        Now, when put this in a script and call the function in PyMOL it
spits out the following error:
        
        Traceback (most recent call last):
          File "/pymol/./modules/pymol/parser.py", line 254, in parse
            self.result=apply(layer.kw[0],layer.args,layer.kw_args)
        TypeError: some_function() got an unexpected keyword argument
'_self'
        
        Is the "*args" method simply not possible in PyMOL?  I tried
using "**args" which worked nicely for keyword arguments.
        
        Any help would be greatly appreciated.  Thank you for your time.
        
        Sean
        
        
________________________________

        Stay on top of things, check email from other accounts! Check it
out. <http://go.microsoft.com/?linkid=9671350>  



------------------------------------------------------------------------------
Let Crystal Reports handle the reporting - Free Crystal Reports 2008 30-Day 
trial. Simplify your report design, integration and deployment - and focus on 
what you do best, core application coding. Discover what's new with 
Crystal Reports now.  http://p.sf.net/sfu/bobj-july
_______________________________________________
PyMOL-users mailing list (PyMOL-users@lists.sourceforge.net)
Info Page: https://lists.sourceforge.net/lists/listinfo/pymol-users
Archives: http://www.mail-archive.com/pymol-users@lists.sourceforge.net

Reply via email to