2013-05-12 45 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