Path: csiph.com!x330-a1.tempe.blueboxinc.net!usenet.pasdenom.info!gegeweb.org!de-l.enfer-du-nord.net!feeder2.enfer-du-nord.net!news-transit.tcx.org.uk!rt.uk.eu.org!newsfeed.xs4all.nl!newsfeed5.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.008 X-Spam-Evidence: '*H*': 0.98; '*S*': 0.00; 'attributes': 0.05; '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; 'guilty': 0.16; 'subject:Overriding': 0.16; 'subject:global': 0.16; 'cc:addr:python-list': 0.16; 'mon,': 0.16; 'meant': 0.17; 'wrote:': 0.18; 'alternate': 0.18; 'functions,': 0.18; 'cc:no real name:2**0': 0.20; "aren't": 0.21; 'dec': 0.22; '(or': 0.22; 'header:In-Reply-To:1': 0.22; 'code': 0.25; 'saying': 0.26; '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; 'kelly': 0.30; 'received:mail-bw0-f46.google.com': 0.30; "i've": 0.31; 'does': 0.32; 'value.': 0.32; 'received:209.85.214': 0.32; 'that,': 0.33; 'there': 0.33; 'external': 0.35; 'uses': 0.36; 'cc:2**1': 0.36; 'variables': 0.37; 'but': 0.37; 'received:google.com': 0.37; 'another': 0.37; 'using': 0.38; 'received:209.85': 0.38; "i'd": 0.39; 'either': 0.39; 'should': 0.39; 'extend': 0.39; 'received:209': 0.40; 'difference': 0.40; '2011': 0.61; 'order': 0.62; 'claim': 0.76; 'hand,': 0.76; 'expectations': 0.77; 'longer,': 0.84; '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:date:message-id:subject:from:to :cc:content-type; bh=52fbF+Vu7oB6ze0iOXlN1/vzmwv6UanF96HugEspQ1Y=; b=TyjMoDgVQjXZnt0EEuUz/CfS3kqlBCN3IuO6LIvTubj7AszA0zXw1bhfCciRJD/UeZ P53NVFBSJaEM37ijRJzo+z7tBZhRSMavr3mADkdjx7rjHXn5s2TqW8yQwUF3anlSUPiJ BfUYiiAxyUY8k18AHevM6WBpQFnWzR+WGJXcE= MIME-Version: 1.0 In-Reply-To: References: <4ee671f6$0$29979$c3e8da3$5496439d@news.astraweb.com> <87k4611l4y.fsf@benfinney.id.au> Date: Tue, 13 Dec 2011 08:34:59 +0000 Subject: Re: Overriding a global From: Joshua Landau To: Ian Kelly 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: 23 NNTP-Posting-Host: 2001:888:2000:d::a6 X-Trace: 1323765301 news.xs4all.nl 6882 [2001:888:2000:d::a6]:51242 X-Complaints-To: abuse@xs4all.nl Xref: x330-a1.tempe.blueboxinc.net comp.lang.python:17108 On 13/12/2011, Ian Kelly wrote: > 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. > So you're saying you should never extend methods or attributes that aren't meant to be used as part of of the API? Because I can claim guilty on this point. I'd make this longer, but I've got class now :(