pydev从一个文件访问另一个文件中另一个类的值

时间:2014-09-26 15:43:58

标签: python python-3.x

我正在使用pydev开发一个项目。这是我使用pydev的第一个项目。 我的项目结构是:

myProject(project)
    projFolder(folder)
        userInterface.py
        makeTriangle.py

我有一个文件userInterface.py。此文件用于从用户获取输入,并在对另一个文件中的输入执行某些操作后通过类显示所需的结果。

现在我要将此文件返回的值传递给另一个名为makeTriangle的文件。但我无法做到这一点。如何将从一个文件返回的值传递给另一个文件?

如果我在这里做错任何事,请告诉我。您的回复将帮助我提高技能。

### userInterface.py #########
class userInterface():

    getList = []
    maxList = 4

    def getUserList(self):
        print("*** getting user input ***")
        while len(self.getList) < self.maxList:
            item = input("enter numbers: ")
            self.getList.append(item)
        return self.getList    

    def showUserList(self,passedList):
        print("*** showing user input ***")
        print (passedList)

### makeTriangle.py #########
from userInterface import userInterface 

class makeTriangle():    
   ### how to get the value of getUserList here 

2 个答案:

答案 0 :(得分:2)

我会将你的初始化userInterface变量放在 init 方法中:

### userInterface.py #########
class userInterface():
    def __init__(self):
        #do initialization.
        self. getList = []
        self. maxList = 4

然后在您的其他文件中,您可以创建userInterface的实例并调用所需的方法。例如,在下面的示例中,doSomething使用userInterface的getUserList。

### makeTriangle.py #########
from userInterface import userInterface 

class makeTriangle():    
    def __init__(self):
        #do any initialization.

    def doSomething():
        ### how to get the value of getUserList here 
        UI = userInterface()
        input = UI.getUserList()
        for num in input:
            #do whatever

我强烈建议您阅读python中的类如何工作。结帐https://docs.python.org/3.2/tutorial/classes.html

答案 1 :(得分:0)

我同意你真的需要阅读文档,但基本上你用self.xxxx标记的任何东西都可以在makeTriange中通过说userInterface.xxxxx来访问你所做的任何方法

所以如果你需要访问maxList变量,那么:

userInterface.maxList 

如果你需要使用getuserList()函数,那么

userInterface.getUserList() 

但是就像其他海报所说,你应该使用init()。现在,你正在制作CLASS变量。请记住,您通常希望将这些属性赋予您使用类创建的对象,而不是自己的类,init()方法将为您执行此操作。

现在,每次你创建一个三角形时,你都会附加到同一个列表,因为getList是一个CLASS方法,但我想你想要为每个三角形添加一个新的列表,所以你需要将它作为一个INSTANCE方法将它放在init()中,每次用类创建一个对象时都会调用它。

所有这些都在文档中解释。