[Python] How to decorate a class?

Discussão em 'Python' iniciado por Stack, Junho 5, 2025.

  1. Stack

    Stack Membro Participativo

    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...

Compartilhe esta Página