如果我在這裏遇到了術語錯誤的道歉,我無法想象這個特定的習慣用法會被調用。在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