Py:函数之间传递实例的问题

2024-09-26 22:53:04 发布

您现在位置:Python中文网/ 问答频道 /正文

所以,我正在写一个神经网络,它工作得完美无缺。但是我决定用tkinter做一个GUI,以便于控制。我的问题是,我可以在一个函数中创建AI实例,但不能从同一层次结构中的另一个函数中访问它(任何类中都没有函数)。 Nn是另一个python脚本

def ph1():
    n = Nn.neuralNetwork(v, v, v, v)

def ph2():
    n.something()

我得到的错误代码是:

name 'n' is not defined


Tags: 实例函数脚本层次结构tkinterdefgui神经网络
2条回答

您得到的错误是因为n只存在于ph1()函数的local namespace中,并且ph2()无法调用它,因为variable scope的概念。因此,您可以使用以下选项来无误地执行此操作:

使用asparameter

def ph1():
    n = Nn.neuralNetwork(v, v, v, v)
    return n

def ph2(n):
    n.something()

n = ph1()
ph2(n)

使用class

class Ph:

    def __init__(self):
        self.n = None
    
    def ph1():
        self.n = Nn.neuralNetwork(v, v, v, v)
    
    def ph2():
        self.n.something()

使用global变量:

n = None
def ph1():
    global n        
    n = Nn.neuralNetwork(v, v, v, v)

def ph2():
    global n
    n.something()

似乎n是函数ph1中本地创建的对象。如果您想从ph2访问它,您需要在ph2内调用函数并返回n,或者将这两个函数都放在一个类中,n是一个实例变量

两者中较简单者如下:

def ph1():
    n = Nn.neuralNetwork(v, v, v, v)
    return n

def ph2():
    n = ph1()
    n.something()

这是你可以考虑的代码吗?

相关问题 更多 >

    热门问题