Python calling method without 'self' Python calling method without 'self' python python

Python calling method without 'self'


Also you can make methods in class static so no need for self. However, use this if you really need that.

Yours:

class bla:    def hello(self):        self.thing()    def thing(self):        print "hello"

static edition:

class bla:    @staticmethod    def hello():        bla.thing()    @staticmethod    def thing():        print "hello"


One reason is to refer to the method of that particular class's instance within which the code is be executed.

This example might help:

def hello():    print "global hello"class bla:    def hello(self):        self.thing()        hello()    def thing(self):        print "hello"b = bla()b.hello()>>> helloglobal hello

You can think of it, for now, to be namespace resolution.


The short answer is "because you can def thing(args) as a global function, or as a method of another class. Take this (horrible) example:

def thing(args):    print "Please don't do this."class foo:    def thing(self,args):        print "No, really. Don't ever do this."class bar:    def thing(self,args):        print "This is completely unrelated."

This is bad. Don't do this. But if you did, you could call thing(args) and something would happen. This can potentially be a good thing if you plan accordingly:

class Person:    def bio(self):        print "I'm a person!"class Student(Person):    def bio(self):        Person.bio(self)        print "I'm studying %s" % self.major

The above code makes it so that if you create an object of Student class and call bio, it'll do all the stuff that would have happened if it was of Person class that had its own bio called and it'll do its own thing afterwards.

This gets into inheritance and some other stuff you might not have seen yet, but look forward to it.