Path: csiph.com!x330-a1.tempe.blueboxinc.net!usenet.pasdenom.info!gegeweb.org!de-l.enfer-du-nord.net!feeder2.enfer-du-nord.net!txtfeed1.tudelft.nl!tudelft.nl!txtfeed2.tudelft.nl!amsnews11.chello.com!newsgate.cistron.nl!newsgate.news.xs4all.nl!post.news.xs4all.nl!not-for-mail Return-Path: X-Original-To: python-list@python.org Delivered-To: python-list@mail.python.org X-Spam-Status: OK 0.000 X-Spam-Evidence: '*H*': 1.00; '*S*': 0.00; 'override': 0.07; 'received:verizon.net': 0.07; 'terry': 0.07; 'python': 0.08; '(it': 0.09; 'received:80.91': 0.09; 'received:80.91.229': 0.09; 'received:80.91.229.12': 0.09; 'received:gmane.org': 0.09; 'received:list': 0.09; 'received:lo.gmane.org': 0.09; 'referenced': 0.09; 'def': 0.13; 'logger.': 0.16; 'reedy': 0.16; 'roy': 0.16; 'subject:Overriding': 0.16; 'subject:global': 0.16; 'wrote:': 0.18; 'jan': 0.19; 'this?': 0.19; 'header:In-Reply- To:1': 0.22; 'statement': 0.23; 'do,': 0.25; 'code': 0.25; 'function': 0.27; 'variable': 0.28; 'pm,': 0.29; 'lines': 0.30; 'does': 0.32; 'implement': 0.32; 'header:User-Agent:1': 0.33; 'header:X-Complaints-To:1': 0.33; 'to:addr:python-list': 0.34; 'skip:" 10': 0.37; 'but': 0.37; 'received:org': 0.38; 'to:addr:python.org': 0.40; 'within': 0.60; 'legal': 0.70 X-Injected-Via-Gmane: http://gmane.org/ To: python-list@python.org From: Terry Reedy Subject: Re: Overriding a global Date: Sat, 10 Dec 2011 19:19:27 -0500 References: Mime-Version: 1.0 Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit X-Gmane-NNTP-Posting-Host: pool-74-109-121-73.phlapa.fios.verizon.net User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:8.0) Gecko/20111105 Thunderbird/8.0 In-Reply-To: X-BeenThere: python-list@python.org X-Mailman-Version: 2.1.12 Precedence: list List-Id: General discussion list for the Python programming language List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Newsgroups: comp.lang.python Message-ID: Lines: 31 NNTP-Posting-Host: 2001:888:2000:d::a6 X-Trace: 1323562796 news.xs4all.nl 6902 [2001:888:2000:d::a6]:34636 X-Complaints-To: abuse@xs4all.nl Xref: x330-a1.tempe.blueboxinc.net comp.lang.python:16975 On 12/10/2011 7:14 PM, Terry Reedy wrote: > On 12/10/2011 3:47 PM, Roy Smith wrote: >> >> What I really want to do is: >> >> def function(self): > > Add a global statement to rebind a global name: > global logger But I see that that is not what you want to do, which is to override the global name just within the function while still accessing the global name. MRAB's solution does that nicely. >> logger = logger.getChild('function') >> logger.debug('stuff') >> logger.debug('other stuff') >> >> which lets me not have to change any lines of code other than inserting >> the one to redefine logger. Unfortunately, that's not legal Python (it >> leads to "UnboundLocalError: local variable 'logger' referenced before >> assignment"). >> >> Any ideas on the best way to implement this? > > -- Terry Jan Reedy