What does the Python error “name 'self' is not defined” mean?

前端 未结 4 1818
心在旅途
心在旅途 2021-01-13 17:32

I can\'t figure out what\'s wrong with this very simple snippet:

class A(object):
        def printme(self):
                print \"A\"

        self.printm         


        
相关标签:
4条回答
  • 2021-01-13 17:52

    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).

    0 讨论(0)
  • 2021-01-13 17:54

    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()
    
    0 讨论(0)
  • 2021-01-13 18:00

    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()
    
    0 讨论(0)
  • 2021-01-13 18:05

    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()
    
    0 讨论(0)
提交回复
热议问题