[Python-Dev] Re: 2.2a1: classmethod() and class attributes

Samuele Pedroni Samuele Pedroni <pedroni@inf.ethz.ch>
Wed, 15 Aug 2001 17:17:58 +0200 (MET DST)


> Aahz:
> > It's not particularly convenient for me to try out 2.2a1, so I'm just
> > going by what's written.  One little hole that I don't see an answer to
> > is what happens when you do this:
> > 
> > class C(object):
> >     x = 0
> >     def foo(cls):
> >         cls.x += 1
> >     foo = classmethod(foo)
> > 
> > C.foo()
> 
> Okay, after thinking about this a bit, I think that if the above code
> requires __dynamic__=1 to work, then the default for __dynamic__ should
> be changed.  I don't find the arguments about changing __class__ to be
> particularly persuasive, but I think the above code *is* closely related
> to standard Python idioms that should work by default.
> 
> +1 on changing __dynamic__ or at least enabling some kind of class
> variable mutability by default.
> -- 

My 2cts: I think this is also a matter of how much complex the language
is perceived:

Before 2.2: everything is dynamic and mutable (pretty general rule,
  a performance killer but that's another point ;) )
 
After:
 - this is mutable and that's not (a more complex picture)
 vs.
 
 - by default everything is mutable ... (advanced user)
  but you can tune that (for good reasons)
  
A marginal note: I agree with James Althoff that some more granularity
about dynamic behavior would be a good thing (but only if the newbie
is protected from the burden)

regards, Samuele Pedroni.