I can\'t figure out what\'s wrong with this very simple snippet:
class A(object):
def printme(self):
print \"A\"
self.printm
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).
if you want to print something when you instantiate the object use:
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()
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()