我正在尝试创建一个包含多个常量的类(在Python 3.6中)。因为常量是具有大量相关值的列表和字典,所以我想使用其他常量生成一些常量。
在尝试这样做时,我偶然发现了一些我不完全理解的限制。我将在以下示例中显示:
创建类Example1
时没有错误:
class Example1: # this works
C1 = [1, 2, 3]
C2 = [2, 3, 4]
C3 = [C2, C2]
C4 = [C1[0], C2[2]]
C5 = [str(c1) for c1 in C1]
C6 = [c1 + c2 for c1, c2 in zip(C1, C2)]
然而,尝试创建Example2
:
class Example2: # this doesn't work
C1 = 1
C2 = [1, 2, 3]
C3 = [C1 + c2 for c2 in C2]
在尝试创建NameError: name 'C1' is not defined
时引发C3
。
Example3
也是如此:
class Example3: # this doesn't work
C1 = [1, 2, 3]
C2 = [2, 3, 4]
C3 = [c1 + c2 for c2 in C2 for c1 in C1]
有人可以解释为什么Example2
和Example3
无法正常工作但Example1
有效吗?这里的规则是什么?是否有其他方法可以在类C3
和Example2
内初始化常量Example3
?
P.S。很抱歉要求多个子请求。