Bonjour,
Je suis récemment tombé sur ce que je pense être une bizarrerie en essayant d'ajouter des méthodes à la volée à une classe. Voici un bout de code qui reproduit mon problème en Python 2.7:
avec pour résultat
Code python : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 from functools import partial def print_var(obj, var): print obj.__class__.__name__ + ": " + var class VarPrint(object): pass VarPrint.print_something = lambda obj: print_var(obj, "something") VarPrint.print_something_else = partial(print_var, var="something else") a = VarPrint() a.print_something() partial(print_var, var="another one")(a) a.print_something_else()
Pourquoi l'utilisation de partial ne fonctionne pas comme attendu ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 VarPrint: something VarPrint: another one Traceback (most recent call last): ... a.print_something_else() TypeError: print_var() takes exactly 2 arguments (1 given)
Partager