7

I'm having trouble with the following Python code:

class Methods:

    def method1(n):
        #method1 code

    def method2(N):
        #some method2 code
            for number in method1(1):
                #more method2 code

def main():
    m = Methods
    for number in m.method2(4):
            #conditional code goes here

if __name__ == '__main__':
    main()

When I run this code, I get

NameError: name 'method1' is not defined.

How do I resolve this error?

Gino Mempin
  • 25,369
  • 29
  • 96
  • 135
maestro777
  • 161
  • 1
  • 2
  • 17

2 Answers2

6

Just add self. in front of it:

self.method1(1)

Also change your method signitures to:

def method1(self, n):

and

def method2(self, n):
Peter Pei Guo
  • 7,770
  • 18
  • 35
  • 54
2

Change your code like following:

class Methods:

    def method1(self,n):
        #method1 code

    def method2(self,N):
        #some method2 code
        for number in self.method1(1):
            #more method2 code

def main():
    m = Methods()
    for number in m.method2(4):
        #conditional code goes here

if __name__ == '__main__':
    main()
  1. Add a self parameter to every methods inside of your class
  2. To call a method inside of your class use self.methodName(parameters)
  3. To make instance of your class you should write class name with paranteses for ex: m = Methods()
Siamand
  • 1,080
  • 10
  • 19