Ajouter dynamiquement une méthode à un seul objet : # contexte de test
class C: pass
o = C()
# ajout
makemethod = lambda obj, func: lambda *a, **k: func(obj, *a, **k)
o.test = makemethod(o, lambda self, arg: 'self=%s, arg=%s' % (self, arg))
# test
o.test(42)
=> 'self=<__main__.C instance at 0xa1be8ac>, arg=42'
Tu vas me dire que c'est compliqué, je te répondrai que ça ne sert quasiment jamais, alors ce n'est vraiment pas compliqué en comparaison de ce que tu essayes de faire.
[^] # Re: Python vs Ruby
Posté par Octabrain . En réponse au journal Choisir un framework web.... Évalué à 3.
# contexte de test
class C: pass
o = C()
# ajout
makemethod = lambda obj, func: lambda *a, **k: func(obj, *a, **k)
o.test = makemethod(o, lambda self, arg: 'self=%s, arg=%s' % (self, arg))
# test
o.test(42)
=> 'self=<__main__.C instance at 0xa1be8ac>, arg=42'
Tu vas me dire que c'est compliqué, je te répondrai que ça ne sert quasiment jamais, alors ce n'est vraiment pas compliqué en comparaison de ce que tu essayes de faire.
Classe anonyme en Python : type("", (), {})