Aaron Hall Aaron Hall - 1 year ago 81
Python Question

How do you call an instance of a class in Python?

This is inspired by a question I just saw, "Change what is returned by calling class instance", but was quickly answered with

(and accepted, so the questioner did not actually intend to call the instance).

Now calling an instance of a class can be done like this:

instance_of_object = object()

but we'll get an error, something like
TypeError: 'object' object is not callable

So to ensure we have this question on Stackoverflow:

How do you actually call an instance of a class in Python?

Answer Source

You call an instance of a class as in the following:

o = object() # create our instance
o() # call the instance

But this will typically give us an error.

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: 'object' object is not callable

How can we call the instance as intended, and perhaps get something useful out of it?

We have to implement Python special method, __call__!

class Knight(object):
    def __call__(self, foo, bar, baz=None):

Instantiate the class:

a_knight = Knight()

Now we can call the class instance:

a_knight('ni!', 'ichi', 'pitang-zoom-boing!')

which prints:


And we have now actually, and successfully, called an instance of the class!

Recommended from our users: Dynamic Network Monitoring from WhatsUp Gold from IPSwitch. Free Download