2013-05-12 67 views
0

我從另一個類C中的方法創建對象X.然後我試圖通過將它作爲參數傳遞來引用那個類C的方法中的對象,但是我得到的錯誤名稱X未定義。該對象是否在不同的命名空間中創建? 從類本身生成的對象是另一個模塊中的java腳本中定義的類。在類中創建對象 - 該對象在哪裏?

模塊B

from moduleA import * 
from moduleX import * 

c = classC(a, b) 
X = c.createX() 
c.doStuffWithX(X, v) 

模塊A

class classC(object): 
    def __init__(self, a, b): 
     self.a = a 
     self.b = b 

    def createX(self): 
     X = someObjectDefinedInJavaLang(self.a, self.b) 
     return X #as suggested by Bruno - still getting the error 

    def doStuffWithX(self, X, v): 
     X.useSomeMethodDefinedinObjectX(v) 

我希望你能跟着我。試圖讓結構清晰,不知道我有多成功。

我也試圖看能否直接通過類屬性

c = classC(a, b) 
X = c.createX() 
X.useSomeMethodDefinedinObject(v) 

這將引發同樣的錯誤引用對象,而不是。我知道當代碼成功運行時(並且要這樣做,他需要該對象,因爲在某些時候該進程會被java拾取),因此當我不嘗試進一步訪問對象自己的屬性時,該對象被「創建」在某處「

+1

不是根據那個代碼你不是。錯字? y = classC(a,b)? – 2013-05-12 16:24:30

+2

您的'createX'不會返回創建的對象。因此,代碼無法工作。但是對於X沒有定義,確切的錯誤信息是什麼? – 2013-05-12 16:26:50

+0

'y'從哪裏來? – 2013-05-12 16:38:42

回答

0
def createX(self): 
    X = someObjectDefinedInJavaLang(self.a, self.b) 
    return X 
+0

謝謝布魯諾。我試過這個,但是我仍然得到同樣的錯誤。 – chrise 2013-05-12 16:50:31

+1

請發佈完整的錯誤消息和追溯。 FWIW我剛運行了你的代碼片段(爲缺少部分的模型),我沒有得到任何錯誤。 – 2013-05-12 16:57:59