[Baypiggies] Frequently Argued Objections
Shannon -jj Behrens
jjinux at gmail.com
Wed Jun 25 03:29:14 CEST 2008
On Tue, Jun 24, 2008 at 10:28 AM, Alex Martelli <aleax at google.com> wrote:
> On Tue, Jun 24, 2008 at 5:03 AM, Shannon -jj Behrens <jjinux at gmail.com> wrote:
>> Your post did bring up one thing I do like about Ruby. It has a more
>> defined notion of class scope at class definition time. If Python had
>> that, I could do something like:
>>
>> class B(A):
>> ...
>> if hasattr(B, 'foo'):
>> ...
>>
>> That's not possible now, because B doesn't exist until the class is
>> finished being defined. There are workarounds. It's not a big deal.
>> I'm just saying ;)
>
> Why do you consider "a workaround" to code for such weird needs:
>
>>>> class B(object):
> ... foo = 23
> ... if 'foo' in locals(): print 'foo is', foo
> ... else: print 'no foo'
> ...
> foo is 23
>
> Seems very direct to me -- the class's direct attributes are kept in
> the class body's locals() while said body executes, and that's the
> dict that's passed to the metaclass's __new__ (and possibly __init__)
> (plus of course each base class may have more attributes). This is a
> perfectly well defined and documented "notion of scope during class
> definition" (even though I've never felt the need to use it within the
> class body, as opposed to using it in some metaclass). What am I
> missing?
Thanks, Alex, I didn't know about that ;)
-jj
--
It's a walled garden, but the flowers sure are lovely!
http://jjinux.blogspot.com/
More information about the Baypiggies
mailing list