Как вариант:
def counter(func): #декоратор-счётчик
def wrapper(*args, **kwargs):
global counts
func(*args, **kwargs)
counts[func.__name__] = counts.get(func.__name__, 0) + 1
return wrapper
class Car():
def __init__(self, speed=100):
self.speed = speed
@counter
def up_speed(self, delta):
self.speed += delta
@counter
def down_speed(self, delta):
self.speed -= delta
def __str__(self):
return 'Current speed equal ' + str(self.speed)
counts = dict()
x = Car()
print(x)
x.up_speed(10)
x.up_speed(20)
x.up_speed(30)
x.down_speed(100)
print(x)
print(counts)
Но так придется прописывать декоратор перед каждым методом. Возможно как-то можно сдекорировать класс целиком.