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:
 Traceback (most recent call last):   File "prog.py", line 1, in
 <module>
     class A(object):   File "prog.py", line 5, in A
     self.printme() NameError: name 'self' is not defined
                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:
class A(object):
    def __init__(self):
        self.printme()
    def printme(self):
        print "A"
a = A()
                        If you're intending for the function to run each time an instance of the class is created, try this:
class A(object):
    def __init__(self):
        self.printme()
    def printme(self):
        print "A"
a = A()
                        If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With