在你的例子中执行x = 10的时候,类不仅不存在,而且也不存在类方法.
Python中的执行从上到下.如果x = 10在类方法之上,那么在这一点上您无法访问类方法,因为尚未定义.
即使你可以运行类方法,这并不重要,因为类不存在,所以classmethod不能引用它.在整个类块运行之前,类不会被创建,所以当你在类块中时,没有类.
如果你想要考虑一些类初始化,所以你可以按照你所描述的方式重新运行它,使用一个类装饰器.类装饰器在创建类之后运行,所以它可以调用类方法很好.
>>> def deco(cls):
... cls.initStuff()
... return cls
>>> @deco
... class Foo(object):
... x = 10
...
... @classmethod
... def initStuff(cls):
... cls.x = 88
>>> Foo.x
88
>>> Foo.x = 10
>>> Foo.x
10
>>> Foo.initStuff() # reinitialize
>>> Foo.x
88