Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > comp.lang.python > #99783

Re: static variables

Path csiph.com!fu-berlin.de!uni-berlin.de!not-for-mail
From Wolfgang Maier <wolfgang.maier@biologie.uni-freiburg.de>
Newsgroups comp.lang.python
Subject Re: static variables
Date Tue, 1 Dec 2015 10:58:50 +0100
Lines 56
Message-ID <mailman.60.1448963939.14615.python-list@python.org> (permalink)
References <n3i06o$9ot$1@news2.informatik.uni-stuttgart.de> <n3ibkd$nl0$1@dont-email.me> <565cf163$0$1612$c3e8da3$5496439d@news.astraweb.com> <n3jljn$os2$1@news2.informatik.uni-stuttgart.de>
Mime-Version 1.0
Content-Type text/plain; charset=utf-8; format=flowed
Content-Transfer-Encoding 7bit
X-Trace news.uni-berlin.de Fn6Ren4IqQmYQgXtYEN6BArCUGLegErzFEd8yvRrTbxQ==
Return-Path <python-python-list@m.gmane.org>
X-Original-To python-list@python.org
Delivered-To python-list@mail.python.org
X-Spam-Status OK 0.001
X-Spam-Evidence '*H*': 1.00; '*S*': 0.00; '(self,': 0.07; 'rename': 0.07; '(self):': 0.09; '__init__': 0.09; 'received:80.91': 0.09; 'received:80.91.229': 0.09; 'received:gmane.org': 0.09; 'received:list': 0.09; 'def': 0.13; 'a()': 0.16; 'cleaner': 0.16; 'counter()': 0.16; 'function?': 0.16; 'received:80.91.229.3': 0.16; 'received:io': 0.16; 'received:plane.gmane.org': 0.16; 'received:psf.io': 0.16; 'renaming': 0.16; 'wrote:': 0.16; 'attribute': 0.18; 'stick': 0.18; 'cheers,': 0.22; 'trying': 0.22; 'seems': 0.23; 'header:In-Reply-To:1': 0.24; 'wondering': 0.25; 'header:User-Agent:1': 0.26; 'header:X-Complaints-To:1': 0.26; 'function': 0.28; 'received:132': 0.29; 'allows': 0.30; "i'm": 0.30; 'print': 0.30; 'skip:_ 10': 0.32; 'implement': 0.32; 'class': 0.33; 'problem': 0.33; "d'aprano": 0.33; 'steven': 0.33; 'something': 0.35; 'possible': 0.36; 'to:addr:python-list': 0.36; 'subject:: ': 0.37; 'received:org': 0.37; 'several': 0.38; 'test': 0.39; 'to:addr:python.org': 0.40; 'more': 0.63; 'now:': 0.72; 'counts': 0.81; '__call__': 0.84
X-Injected-Via-Gmane http://gmane.org/
X-Gmane-NNTP-Posting-Host 132.230.194.214
User-Agent Mozilla/5.0 (X11; Linux x86_64; rv:38.0) Gecko/20100101 Thunderbird/38.3.0
In-Reply-To <n3jljn$os2$1@news2.informatik.uni-stuttgart.de>
X-BeenThere python-list@python.org
X-Mailman-Version 2.1.20+
Precedence list
List-Id General discussion list for the Python programming language <python-list.python.org>
List-Unsubscribe <https://mail.python.org/mailman/options/python-list>, <mailto:python-list-request@python.org?subject=unsubscribe>
List-Archive <http://mail.python.org/pipermail/python-list/>
List-Post <mailto:python-list@python.org>
List-Help <mailto:python-list-request@python.org?subject=help>
List-Subscribe <https://mail.python.org/mailman/listinfo/python-list>, <mailto:python-list-request@python.org?subject=subscribe>
Xref csiph.com comp.lang.python:99783

Show key headers only | View raw


On 01.12.2015 09:26, Ulli Horlacher wrote:
> Steven D'Aprano <steve@pearwood.info> wrote:
>
>> A better and more general test is:
>>
>> if hasattr(a, 'x'): print('attribute of a')
>
> Fine!
>
> I have now:
>
> def a(x=None):
>    if not hasattr(a,'x'): a.x = 0
>    a.x += 1
>    print('%d:' % a.x,x)
>
> This simply counts the calls of a()
>
> But, when I rename the function I have to rename the attribute also.
> Is it possible to refer the attribute automatically to its function?
> Something like:
>
> def a(x=None):
>    if not hasattr(_function_,'x'): _function_.x = 0
>    _function_.x += 1
>    print('%d:' % _function_.x,x)
>
>


I'm wondering whether you have a good reason to stick with a function. 
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)

Cheers,
Wolfgang

Back to comp.lang.python | Previous | NextPrevious in thread | Next in thread | Find similar | Unroll thread


Thread

static variables Ulli Horlacher <framstag@rus.uni-stuttgart.de> - 2015-11-30 17:15 +0000
  Re: static variables Terry Reedy <tjreedy@udel.edu> - 2015-11-30 12:38 -0500
  Re: static variables BartC <bc@freeuk.com> - 2015-11-30 20:32 +0000
    Re: static variables Steven D'Aprano <steve@pearwood.info> - 2015-12-01 12:01 +1100
      Re: static variables Ulli Horlacher <framstag@rus.uni-stuttgart.de> - 2015-12-01 08:26 +0000
        Re: static variables Peter Otten <__peter__@web.de> - 2015-12-01 10:01 +0100
        Re: static variables Grobu <snailcoder@retrosite.invalid> - 2015-12-01 10:15 +0100
          Re: static variables Steven D'Aprano <steve@pearwood.info> - 2015-12-02 12:02 +1100
            Re: static variables Erik <python@lucidity.plus.com> - 2015-12-02 01:16 +0000
              Re: static variables Steven D'Aprano <steve@pearwood.info> - 2015-12-02 12:24 +1100
                Re: static variables Antoon Pardon <antoon.pardon@rece.vub.ac.be> - 2015-12-02 09:21 +0100
                Re: static variables Antoon Pardon <antoon.pardon@rece.vub.ac.be> - 2015-12-02 09:34 +0100
                Re: static variables Steven D'Aprano <steve@pearwood.info> - 2015-12-02 21:22 +1100
                Re: static variables Antoon Pardon <antoon.pardon@rece.vub.ac.be> - 2015-12-02 12:09 +0100
                Re: static variables Steven D'Aprano <steve@pearwood.info> - 2015-12-03 00:11 +1100
                Re: static variables Antoon Pardon <antoon.pardon@rece.vub.ac.be> - 2015-12-02 14:41 +0100
                Re: static variables Mark Lawrence <breamoreboy@yahoo.co.uk> - 2015-12-02 13:48 +0000
                Re: static variables Antoon Pardon <antoon.pardon@rece.vub.ac.be> - 2015-12-02 15:07 +0100
                Re: static variables Ian Kelly <ian.g.kelly@gmail.com> - 2015-12-02 08:15 -0600
                Re: static variables Mark Lawrence <breamoreboy@yahoo.co.uk> - 2015-12-02 14:31 +0000
                Re: static variables Antoon Pardon <antoon.pardon@rece.vub.ac.be> - 2015-12-02 16:30 +0100
                Re: static variables Ian Kelly <ian.g.kelly@gmail.com> - 2015-12-02 14:30 -0600
                Re: static variables Antoon Pardon <antoon.pardon@rece.vub.ac.be> - 2015-12-03 10:06 +0100
                Re: static variables Chris Angelico <rosuav@gmail.com> - 2015-12-02 20:23 +1100
                Re: static variables Antoon Pardon <antoon.pardon@rece.vub.ac.be> - 2015-12-02 10:47 +0100
                Re: static variables Marko Rauhamaa <marko@pacujo.net> - 2015-12-02 12:18 +0200
                Re: static variables Antoon Pardon <antoon.pardon@rece.vub.ac.be> - 2015-12-02 11:56 +0100
                Re: static variables Marko Rauhamaa <marko@pacujo.net> - 2015-12-02 13:30 +0200
                Re: static variables Steven D'Aprano <steve@pearwood.info> - 2015-12-03 00:17 +1100
        Re: static variables Wolfgang Maier <wolfgang.maier@biologie.uni-freiburg.de> - 2015-12-01 10:58 +0100
          Re: static variables Ulli Horlacher <framstag@rus.uni-stuttgart.de> - 2015-12-01 11:47 +0000

csiph-web