Bound and unbound methods

We will now take a closer look at attributes that are methods. Let us consider an example:

class A:
    def func(self,arg):
        pass

A little inspection shows us how the nature of func changes after creating an instance:

A.func  # <unbound method A.func>
instA = A()  # we create an instance
instA.func  #  <bound method A.func of ... >

Calling, for example,  A.func(3) would result in an error message such as this:

TypeError: func() missing 1 required positional argument: 'arg'

instA.func(3) is executed as expected. Upon creation of an instance, the func method is bound to the instance. The self argument gets the instance assigned as its value. Binding a method to an instance makes the method usable as a function. Before that, it is of no use. Class methods, which we will consider later, are different in this aspect.

..................Content has been hidden....................

You can't read the all page of ebook, please click here login for view all page.
Reset
3.145.179.59