Dans Python 2.5, existe-t-il un moyen de créer un décorateur qui décore une classe ? Plus précisément, je veux utiliser un décorateur pour ajouter un membre à une classe et modifier le constructeur pour qu'il prenne une valeur pour ce membre.
Je cherche quelque chose comme ce qui suit (qui présente une erreur de syntaxe sur 'class Foo:' :
def getId(self): return self.__id
class addID(original_class):
def __init__(self, id, *args, **kws):
self.__id = id
self.getId = getId
original_class.__init__(self, *args, **kws)
@addID
class Foo:
def __init__(self, value1):
self.value1 = value1
if __name__ == '__main__':
foo1 = Foo(5,1)
print foo1.value1, foo1.getId()
foo2 = Foo(15,2)
print foo2.value1, foo2.getId()
Je crois que ce que je cherche vraiment, c'est un moyen de faire quelque chose comme une interface C# en Python. Je dois changer de paradigme, je suppose.