如果我在这里遇到了术语错误的道歉,我无法想象这个特定的习惯用法会被调用。在Python中的类中创建一个类的静态实例
我一直在尝试创建一个静态声明自身内部实例的Python 3类 - 有点像枚举可以工作。下面是我写的代码的简化版本:
class Test:
A = Test("A")
B = Test("B")
def __init__(self, value):
self.value = value
def __str__(self):
return "Test: " + self.value
print(str(Test.A))
print(str(Test.B))
写这本,我上线2(A = Test("A")
)异常。我假设第3行也会出错,如果它已经做到了这一点。使用__class__
而不是Test
给出了相同的错误。
File "<stdin>", line 1, in <module>
File "<stdin>", line 2, in Test
NameError: name 'Test' is not defined
有什么办法在Python的静态上下文中引用当前类?我可以在类之外或者在一个单独的类中声明这些特定的变量,但为了清楚起见,如果我能够帮助它,我宁愿不要。
为了更好地说明什么,我试图做的,这里是一个Java同样的例子:
public class Test {
private static final Test A = new Test("A");
private static final Test B = new Test("B");
private final String value;
public Test(String value) {
this.value = value;
}
public String toString() {
return "Test: " + value;
}
public static void main(String[] args) {
System.out.println(A);
System.out.println(B);
}
}
这个工作你所期望的:它打印:
Test: A
Test: B
我该怎么办Python中的一样东西?
当然 - 不能相信我没有看到这一点。非常感谢您的帮助。 – 2010-03-30 15:58:07