2008-12-18 65 views
1

我有一段代碼基本上是初始化幾個類,但是它們是按順序排列的,因爲後面的代碼會引用早期的代碼。不等待類初始化的代碼!

由於某種原因,最後一個在第一個之前初始化......在我看來,有某種線程正在進行。我需要知道的是我怎樣才能阻止它做到這一點?

是否有某種方法可以使類init執行類似於發送返回值的操作?

或者我可以在某種if語句中使用該類來檢查該類是否已被初始化?

我對Python有點新,並且正在從C中遷移,所以我仍然習慣於像命名約定這樣的小差異。

+0

郵政編碼,請。 「init發送返回值」表示一些潛在的概念問題。 – 2008-12-18 11:15:55

+0

你能給我們一些代碼嗎?如果我們不知道你在做什麼,很難弄清楚你的問題。 另外,請嘗試在您的構造函數中放置打印語句以查看實例化的順序。 – Dan 2008-12-18 12:21:06

回答

0

Python upto 3.0有一個全局鎖,所以一切都在一個線程和順序運行。

我的猜測是,一些副作用從一個不同的地方初始化最後一堂課,超出了你的預期。拋出最後一個類的__init__中的異常,以查看它被調用的位置。

+0

Py3k不會刪除GIL AFAIK。 – muhuk 2008-12-18 10:49:07

0

Spaces vs. Tabs issue ...呃。 >。>

那麼,至少現在它工作。我承認我錯過了C語言的大括號,而不是強制縮進。儘管如此,它還是一個原型語言。當我更好地掌握它的時候,也許我會越來越喜歡它。