Python类函数找不到类variab

2024-05-12 21:07:27 发布

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

我是python新手,但对OO语言相当熟悉,我正在努力解决一个编译错误,这个错误很明显,但我不知道如何修复。你知道吗

这是我的课

class Neuron(): 
    def __init__(self):
        self.__output = 0
        self.__inputNeurons = []

    def initInputNeurons(neuronArray, initialWeight=0):
        for neuron in neuronArray:
            __inputNeurons.append((neuron, initialWeight))

    def activateFromInput(value):
        output = value;

    def activateFromNeurons(activationFunction, threshold=1): 
        sumWeightedInputs = 0
        for connection in __inputNeurons: 
            sumWeightedInputs += connection[0].output * connection[1]
        output = activationFunction(sumWeightedInputs, threshold)

它相当简单,有一个init函数和几个激活选项。在读入训练数据后,我用下面的代码初始化神经网络。你知道吗

inputNeurons = []
for value in trainingCharacterVecs[0]:
    inputNeurons.append(Neuron())

outputNeurons = []
for value in range(7):
    print(value);
    neuron = Neuron()
    Neuron.initInputNeurons(inputNeurons, value)
    outputNeurons.append(neuron)

我的错误发生在初始化outputNeuron数组时,特别是在运行时

Neuron.initInputNeurons(inputNeurons, value)

我得到以下错误

Traceback (most recent call last):
    File "./simpleNet.py", line 88, in <module>
Neuron.initInputNeurons(inputNeurons, value)
    File "./simpleNet.py", line 62, in initInputNeurons
__inputNeurons.append((neuron, initialWeight))
NameError: name '_Neuron__inputNeurons' is not defined

错误告诉我输入神经元不存在。当我将\u inputNeurons\u init\uuuu函数外定义为静态变量时,也是这样。你知道吗

我应该如何在python中定义和访问类变量?你知道吗


Tags: inselfforoutputinitvaluedef错误
1条回答
网友
1楼 · 发布于 2024-05-12 21:07:27

使用Python,您需要为每个引用显式地引用self。这意味着它是您的第一个参数它需要通过点表示法引用。你知道吗

试试这个:

# self is the first parameter
def initInputNeurons(self, neuronArray, initialWeight=0):
    for neuron in neuronArray:
        # direct reference to self
        self.__inputNeurons.append((neuron, initialWeight))

# ... LATER ... 
def activateFromNeurons(self, activationFunction, threshold=1): 
    sumWeightedInputs = 0
    # Note the reference to `self.`
    for connection in self.__inputNeurons: 
        sumWeightedInputs += connection[0].output * connection[1]
    output = activationFunction(sumWeightedInputs, threshold)

# and at the bottom:

    neuron = Neuron()
    # marking this lower case, to match your variable name.
    # otherwise `self` doesn't get passed.
    neuron.initInputNeurons(inputNeurons, value)
    outputNeurons.append(neuron)

相关问题 更多 >