How do I create a decorator that applies to classes? Specifically, I want to use a decorator addID to add a member __id to a class, and change the constructor __init__ to take an id argument for that member. def getId(self): return self.__id class decorator addID(cls): def __init__(self, id, *args, **kws): self.__id = id self.getId = getId cls.__init__(self, *args, **kws) @addID class Foo: def __init__(self, value1): self.value1 = value1 The above should be equivalent to: class Foo: def __init__(self, id, value1): self.__id = id self.value1 = value1 def getId(self): return self.__id Continue reading...