Path: csiph.com!x330-a1.tempe.blueboxinc.net!usenet.pasdenom.info!news.albasani.net!feeder.erje.net!newsfeed.xs4all.nl!newsfeed6.news.xs4all.nl!xs4all!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.007 X-Spam-Evidence: '*H*': 0.99; '*S*': 0.00; 'attribute': 0.07; 'difference,': 0.09; 'subclass': 0.09; 'api': 0.09; 'attribute,': 0.16; 'cc:addr:benfinney.id.au': 0.16; 'cc:name:ben finney': 0.16; 'subject:Overriding': 0.16; 'subject:global': 0.16; 'cc:addr :python-list': 0.16; 'mon,': 0.16; 'received:74.125.82.44': 0.16; 'received:mail-ww0-f44.google.com': 0.16; 'wrote:': 0.18; 'alternate': 0.18; 'functions,': 0.18; 'cc:no real name:2**0': 0.20; 'dec': 0.22; '(or': 0.22; 'header:In-Reply-To:1': 0.22; 'code': 0.25; 'code.': 0.26; 'function': 0.27; 'code,': 0.27; 'variable': 0.28; 'message-id:@mail.gmail.com': 0.28; 'cc:addr:python.org': 0.29; 'pm,': 0.29; 'class': 0.29; 'does': 0.32; 'value.': 0.32; 'that,': 0.33; 'there': 0.33; 'received:74.125.82': 0.35; 'external': 0.35; 'uses': 0.36; 'cc:2**1': 0.36; 'variables': 0.37; 'received:74.125': 0.37; 'received:google.com': 0.37; 'another': 0.37; 'using': 0.38; 'either': 0.39; 'difference': 0.40; '2011': 0.61; 'order': 0.62; 'hand,': 0.76; 'expectations': 0.77; 'confusion.': 0.91; 'locally': 0.91 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=mime-version:in-reply-to:references:from:date:message-id:subject:to :cc:content-type; bh=kVoQ01B3LbWr+NRAarVCOF2PSQ+7Ilr2+6ZcZhl/CeY=; b=G1UeT1KM1HvU1bbjSFQfHnDBXIpki3W2VH6rI9aYQSkrLgmgpumIRzvCJkI1W6gsqR Ot3G1fBHsfuPfgC3X1sHvqfYdp6AWbMVk85NorXU7VJgOMCRQkG9JuM1nNg/Uv0/F5B3 Z6/lf3gOc9Tttny7Gz/+R5SbNEzgQsUUP+tWI= MIME-Version: 1.0 In-Reply-To: References: <4ee671f6$0$29979$c3e8da3$5496439d@news.astraweb.com> <87k4611l4y.fsf@benfinney.id.au> From: Ian Kelly Date: Mon, 12 Dec 2011 22:50:44 -0700 Subject: Re: Overriding a global To: Joshua Landau Content-Type: text/plain; charset=ISO-8859-1 Cc: python-list@python.org, Ben Finney 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: 15 NNTP-Posting-Host: 2001:888:2000:d::a6 X-Trace: 1323755476 news.xs4all.nl 6888 [2001:888:2000:d::a6]:52929 X-Complaints-To: abuse@xs4all.nl Xref: x330-a1.tempe.blueboxinc.net comp.lang.python:17105 On Mon, Dec 12, 2011 at 4:48 PM, Joshua Landau wrote: > Rebinding logger locally in a function is really no > different to a subclass rebinding a variable from its main class using that > class' value. The only difference is that, in that case, you have an > alternate binding to the original value. No, there is another difference, the reason for rebinding the name. In a subclass, you would rebind a class attribute because that particular attribute, which you need to change, is used and expected by external code, either in the base class or in code that uses its API (or both). Local variables in functions, on the other hand, are not externally visible, so there is no need to do this in order to conform to the expectations of external code. All it does in that case is to sow potential confusion.