beginner: using parameter in functions
sjmachin at lexicon.net
Thu Jun 1 02:21:05 CEST 2006
On 1/06/2006 9:24 AM, 3rdshiftcoder wrote:
> i am having trouble using parameter values in my function and to be honest a
> little trouble with
> member variables. i am trying to pass in the argument 'd' representing
> what the code will do is if it is 'd' it will make a delete query template
> if it is an 'i' then insert query etc.
> this is the results of my attempt to print the contents of the parameter
> <__main__.getQryStr instance at 0x01151D50> ('d',) me mad
Exactly right, first parameter is the object itself, second parameter is
a 1-tuple of the supplied args. See more explanation below.
> (and on a side note if i dont include the *args i get an invalid number of
> parameters supplied message.)
> why is it returning the value in this format ('d',) ?
> i cant get x == d
> i guess that value 'd' is stored in a tuple and i'd like to get it out of
No, 'd' is stored as the value of the attribute you've named "x". One of
the main points of the whole OO caper is that objects have attributes --
please see later remarks about the tutorial.
> so basically the function returns nope as it stands
> python is sure different from other languages i have used.
> thanks for any help,
> class getQryStr:
> def __init__(self,op):
> print op
> self.x = 'd'
You probably meant
self.x = op
> def returnStr(x,*args):
Like the first (__init__) method, this should have the mandatory "self"
argument, plus *one* other arg .. *if* you need it. It's not apparent
why you are calling the constructor *and* the returnStr method *each*
> print '%s %s me mad' % (x,args)
> if x == 'd':
Here x is the object that you have created. The first argument to a
method is the object itself, and is conventionally named "self". It must
be declared in the method itself
def amethod(self, arg1, arg2):
but is supplied automatically when you invoke it
Please consider working your way through the Python tutorial
and/or one of the free e-books e.g.
At the end of this post is a modified version of your script which shows
what is going on under normal expected usage.
8<=== demo script ===
def __init__(self, op):
print '__init__ ... op:%r' % op
self.x = op
def returnStr(self, arg):
print 'returnStr ... self.x:%r arg:%r' % (self.x, arg)
return '=%s=%s=' % (self.x, arg)
obj = getQryStr('blah')
print '__main__ ... obj.x:%r' % obj.x
s = obj.returnStr('yadda')
print '__main__ ... s:%r' % s
8<=== output from demo script ===
__init__ ... op:'blah'
__main__ ... obj.x:'blah'
returnStr ... self.x:'blah' arg:'yadda'
__main__ ... s:'=blah=yadda='
8<=== end ===
More information about the Python-list