Wolfgang Maier <wolfgang.ma...@biologie.uni-freiburg.de> wrote: > I'm wondering whether you have a good reason to stick with a function.
Easy handling, no programming overhead. Clean, orthogonal code. > What you are trying to achieve seems to be easier and cleaner to > implement as a class: > > class Counter (object): > def __init__ (self, start_value=0): > self.x = start_value > > def __call__ (self): > self.x += 1 > > 1) solves the renaming problem > 2) allows you to have several counters around: > > counter1 = Counter() > counter2 = Counter() > counter3 = Counter(35) > counter1() > counter2() > counter1() > print (counter1.x, counter2.x, counter3.x) Implementing a counter was only an example for a static variable, not the primary goal. With a class, I find it irritating the first function call have to be different than the subsequent ones: def main(): a=A(1) a(1) a(5) a(0) print(a.n) class A(object): def __init__ (self,*arg): self.n = 0 def __call__(self,x): self.n += 1 print('%d:' % self.n,x) main() -- Ullrich Horlacher Server und Virtualisierung Rechenzentrum IZUS/TIK E-Mail: horlac...@tik.uni-stuttgart.de Universitaet Stuttgart Tel: ++49-711-68565868 Allmandring 30a Fax: ++49-711-682357 70550 Stuttgart (Germany) WWW: http://www.tik.uni-stuttgart.de/ -- https://mail.python.org/mailman/listinfo/python-list