title: Using inheritance in python
body: <p>this is my homework assignment, I saw it posted on the website before, but it looks like it was unsolved and I got a different error message than a person asking that question before.</p>
  
  <p>the first part of the problem is to define the subclass Worker that inherits from Employee and includes an attribute that refers to another employee who is the worker's manager. You should define a method get_manager that returns the workers' manager.</p>
  
  <p>Example:</p>
  
  <pre><code>worker = Worker("Fred", 52000, myboss)
  </code></pre>
  
  <p>The second part of the problem is to define the subclass Executive that inherits from Employee and includes an attribute that refers to the yearly bonus.</p>
  
  <p>You should override the wage method to compute executive pay based on his/her salary and bonus. You should use the wage method of Employee in the definition of the wage method for the Executive class.</p>
  
  <p>Example:</p>
  
  <pre><code>executive = Executive("Kerry", 520000, 1040000)
  </code></pre>
  
  <p>My code is written below and the error message I get is: 'global name 'salary' is not defined' in the line 'Employee.<strong>init</strong>(self, name, salary) ' for class Executive (It works for Worker class). Why do I get that error and how can I fix it?</p>
  
  <p>Thank you for your help!</p>
  
  <pre><code>class Employee(object):
      def __init__(self, name, salary):
          self._name = name
          self._salary = salary
  
      def my_name(self):
          return self._name
  
      def wage(self):
          return self._salary/26   # fortnight pay
  
  class Worker(Employee):
      def __init__(self, name, salary, manager):
          Employee.__init__(self, name, salary)
          self._manager = manager
  
      def getManager(self):
          return self._manager
  
  class Executive(Employee):
      def __init__(self, name, wage, yearlyBonus):
          Employee.__init__(self, name, salary) 
          self._yearlyBonus = yearlyBonus
  
      def wage(self):
          return Employee.wage(self)
  </code></pre>