Design Pattern - Créer une fonction alias d'une méthode
Bonjour,
Je me demande s'il est possible (et judicieux) de créer quelque chose qui fasse ceci:
Code:
1 2 3 4
| funcs = (Foo(arg_1), Bar(arg_2, arg_3))
for func in funcs:
func(arg) |
Voici un exemple concret d'utilisation. Je souhaite calculer une moyenne mobile sur x valeurs. J'ai donc une fonction qui me fait ça et qui est construite à peu près comme suit:
Code:
1 2
| def roll_average(array, n):
pass |
J'aimerais pouvoir définir par la suite une fonction "héritée" de roll_average mais avec le paramètre n fixe, comme 10d_roll_average (moyenne mobile sur 10 jours). Je pourrais ainsi créer un nombre indéterminé de fonctions qui pourront toutes être appelée simplement en faisant f(array). Peut-être peut-on transformer roll_average en une classe avec comme attribut n, la période sur laquelle faire la moyenne et une méthode calc(). Un peu comme ça:
Code:
1 2 3 4 5 6 7 8
| class RollAverage(object):
def __init__(self, n):
self.n = n
def calc(self, array):
pass
10d_roll_average = RollAverage(10)
res = 10d_roll_average.calc(array) |
Mais je ne trouve pas ça super élégant. Ne peut-on pas créer un alias de la méthode calc() de sorte à faire plutôt:
Code:
1 2
| 10d_roll_average = RollAverage(10)
res = 10d_roll_average(array) |
Ciao