还有另一种方法可以让静态变量依赖于以前的变量吗?

Is there another way to have static variables depend on previous ones?

我想做这样的事情:

class Foo:
    A = some_constant
    B = Foo.A + 2
    ...

这不起作用,因为我无法在 B 的赋值中引用 Foo

我知道使用全局变量会起作用:

A = some_constant
B = A + 2
class Foo:
    ...

或者在 class 定义之后分配变量会起作用:

class Foo:
    ...
Foo.A = some_constant
Foo.B = Foo.A + 2

然而,第一个没有提供我想要的范围,而第二个在我的代码组织方面相当笨拙,因为它迫使我在 class 定义之后定义这些变量.

还有其他方法可以解决这个问题吗?

我不明白为什么这行不通:

class Foo:
    A = some_constant
    B = some_constant + 2
    ...

您可以在声明中直接使用 class 变量(不带前缀)。但请记住,这是一件 one-time 的事情。稍后更改 Foo.A 将不会更新 Foo.B。

class Foo:
    A = 98
    B = A + 2