If you wish to count how many times a method has been called, no matter which instance called it, you could use a class member like this:
class Foo(object): calls=0 # <--- call is a class member def baz(self): Foo.calls+=1 foo=Foo() bar=Foo() for i in range(100): foo.baz() bar.baz() print('Foo.baz was called {n} times'.format(n=foo.calls)) # Foo.baz was called 200 times
When you define calls this way:
class Foo(object): calls=0
Python places the key-value pair ('calls', 0) in Foo.__dict__.
It can be accessed with Foo.calls. Instances of Foo, such as foo=Foo(), can access it with foo.calls as well.
To assign new values to Foo.calls you must use Foo.calls = .... Instances can not use foo.calls = ... because that causes Python to place a new and different key-value pair in foo.__dict__, where instance members are kept.