title: NameError: name 'self' is not defined in Neural Network example
body: <p>I'm running the following code straight from Tariq Rashid's "Make Your Own Neural Network".  It says "NameError: name 'self' is not defined".  But it is defined.  The code is straight from the book.</p>
  
  <pre><code>import numpy
  
  #neural network class definition
  class neuralNetwork:
  
      #initialize the neural network
      def __init__(self, inputnodes, hiddennodes, outputnodes, learningrate):
          # set number of nodes in each input, hidden, output layer
          self.inodes = inputnodes
          self.hnodes = hiddennodes
          self.onodes = outputnodes
  
          #learning rate
          self.lr = learningrate
          pass
  
      #train the neural network
      def train():
          pass
  
      #query the neural network
      def query():
          pass
  
  #number of input, hidden and output nodes
  input_nodes = 3
  hidden_nodes = 3
  output_nodes = 3
  
  #learning rate is 0.3
  learning_rate = 0.3
  
  #create instance of neural network
  n = neuralNetwork(input_nodes, hidden_nodes, output_nodes, learning_rate)
  
  numpy.random.rand(3, 3)-0.5
  
  #link weight matrices, wih and who
  #weights inside the arrays are w_i_j, where link is from node i to node j in 
  the next layer
  #w11 w21
  #w12 w22 etc
  self.wih = (numpy.random.rand(self.hnodes, self.inodes) - 0.5)
  self.who = (numpy.random.rand(self.onodes, self.hnodes) - 0.5)
  </code></pre>