class A(object):
    pass

def wrapper(func):

    def inner(*args, **kwargs):
        print('called it')
return func(*args, **kwargs)
return inner
Stick = A()
A.__setattr__ = wrapper(A.__setattr__)
Stick.x = 14
Stick.x *= 2
Python - can I wrap attribute assignment without writing a getter/setter