例子:
class A:
a = 1
class B(A):
b = 2
y = b # works fine
x = a # NameError: name 'a' is not defined
x = A.a # works fine
z = B()
z.a # works fine
B.a # works fine
为什么x = a
不允许?在所有其他上下文中(通过实例访问,通过子类名称访问)它都可以正常工作;但不知何故在类本身内部,它不起作用。
鉴于这种行为,我似乎无法实现一个类层次结构,其中每个类都定义了一些额外的属性——因为如果不知道它们在层次结构中的确切定义位置,我将无法在子类中访问它们。
这是我试图(不成功)做的事情:
class X:
accelerate = compose(f1, f2, f3) # f1, f2, f3 are functions
class Y(X):
move = compose(f4, f5)
stop = f6
class Z(Y):
action = compose(accelerate, stop)
class U(Y):
action = compose(move, stop)
这些类根本不会被初始化;我只是想用它们来创建函数层次结构。