Skip to content Skip to sidebar Skip to footer

What Does The Python Error "name 'self' Is Not Defined" Mean?

I can't figure out what's wrong with this very simple snippet: class A(object): def printme(self): print 'A' self.printme() a = A() Error output:

Solution 1:

The following should explain the problem. Maybe you will want to try this?

class A(object):
    def printme(self):
        print "A"
a = A()
a.printme()

The name self is only defined inside methods that explicitly declare a parameter called self. It is not defined at the class scope.

The class scope is executed only once, at class definition time. "Calling" the class with A() calls it's constructor __init__() instead. So maybe you actually want this:

classA(object):def__init__(self):
        self.printme()
    defprintme(self):
        print "A"
a = A()

Solution 2:

If you're intending for the function to run each time an instance of the class is created, try this:

classA(object):def__init__(self):
        self.printme()

    defprintme(self):
        print "A"

a = A()

Solution 3:

It's exactly what it says: self is not defined when you call self.printme(). self isn't magically defined for you in Python; it only works inside a method which has an argument named self. If it helps, try replacing the word self with something else, say foo, throughout your program (because there is really nothing special about self as an identifier).

Solution 4:

if you want to print something when you instantiate the object use:

classA(object):def__init__(self):
            self.printme()

    defprintme(self):
            print "A"

a = A()

Post a Comment for "What Does The Python Error "name 'self' Is Not Defined" Mean?"