pythonpython-3.xdebuggingerror-handling

method is not defined - how compiler missed it?


Any clues why the method in my class compiles and says that it was not declared when after I try to run it? As anyone can see in the code, the function2 is declared in the class:

class MyClass():
  def __init__(self):
      pass

  def function2(self,myfilename):
      file = open(myfilename, "r")

      for line in file:
          print(line, end='')

      file.close()

  def function1(self,myfilename):
      function2(myfilename)

def main():
    myfilename = "input.txt"    
    obj = MyClass()
    obj.function1(myfilename) 

if __name__ == '__main__':
    main()

I compile the code with no problem. But when trying run, it says:

NameError: name 'function2' is not defined

Why this compiles nicely, but though get crashed when put to run? Any suggestions?


Solution

  • Replace the following -

      def function1(self,myfilename):
          function2(myfilename)
    

    with -

      def function1(self,myfilename):
          self.function2(myfilename)