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)
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.