From: Joaquin Abian on
On Apr 2, 1:25 pm, "vlad_fig" <vlad_...(a)yahoo.com> wrote:
> Hello all,
>
> I would like some help with setting up a method that would allow me to change its number of parameters. For example:
>
> #---------------------
> class createfile(object):
>
> def __init__(self,
> modelName = None,
> someLines = None):
>
> self.modelName = modelName
>
> if someLines is None:
> self.someLines = []
> else:
> self.someLines = someLines
>
> def writeStuff(self,
> numberParameters = None,
> Parameter1 = None,... ??? )
> self.someLines .append("yes, we can %s" % self.Parameter1)
> #---------------------
> file = createfile('file')
>
> file.writeStuff(2,a1,a2)
> file.writeStuff(3,a1,a2,a3)
> ....
> file.writeStuff(n,a1,a2,...an)
>
> ---
> so i want a method i can call based on the number of parameters n , and that allows me to add these extra parameters based on n
>
> Thank you,
> Vicnic

Maybe you are looking for *args:

class Test():
def meth(self, *args):
print args

inst = Test()
inst.meth(1,2,3,4,5,6,7)

#prints (1,2,3,4,5,6,7)

Cheers
Joaquin
From: alex23 on
"vlad_fig" <vlad_...(a)yahoo.com> wrote:
> file.writeStuff(2,a1,a2)
> file.writeStuff(3,a1,a2,a3)
> ....
> file.writeStuff(n,a1,a2,...an)
> ---
> so i want a method i can call based on the number of parameters
> n , and that allows me to add these extra parameters based on n

It's not necessary to have to specify the number of parameters, you
can use Python's support for optional parameters[1] instead:

def writeStuff(self, *args):
self.someLines.append(args)

args will be a list of the values passed into writeStuff.

1: http://docs.python.org/reference/expressions.html#calls