1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50
| #!/usr/bin/env python
# -*- coding: UTF-8 -*-
#
#
class decorateur(object):
def __init__(self, fonc=None, d={}):
self.fonc = fonc
self.d = d
def __call__(self, *args, **kwargs):
result = self.fonc(*args, **kwargs)
if self.fonc.__name__ in self.d:
self.d[self.fonc.__name__].append(result)
else:
self.d[self.fonc.__name__] = [result]
return result
def getitem(self, name):
if name in self.d:
return self.d[name]
def getitemlen(self, name):
if name in self.d:
return len(self.d[name])
def getmembers(self):
return list(self.d.keys())
@decorateur
def Foo(a, b):
return a*b
@decorateur
def Foo1(a, b):
return a-b
Foo(1, 5)
Foo(5, 5)
print("Valeurs de Foo :", decorateur().getitem('Foo'))
print("Nombre de valeurs pour Foo :", decorateur().getitemlen('Foo'))
Foo1(5, 3)
d = decorateur()
print("Valeurs de Foo1 :", decorateur().getitem('Foo1'))
print("Nombre de valeurs pour Foo1 :", decorateur().getitemlen('Foo1'))
print("Valeurs de Foo2 :", d.getitem('Foo2'))
print("Nombre de valeurs pour Foo2 :", d.getitemlen('Foo2'))
print("Fonctions utilisées", d.getmembers()) |
Partager