J'ai un code où je veux 'voler' les méthodes d'une autre classe en cours d'exécution. (C'est un petit jeu et je veux permettre aux bots de changer de stratégie à la demande).Comment copier la méthode non-bornée en tant que borne dans une instance de classe en Python
Exemple:
class X(object):
def foo(self):
return 1
class Y(object):
def foo(self):
return 2
Je veux 'copie' Y.foo en instance de classe X:
x.foo = Y.foo
x.foo() # unbound method
x.foo = types.MethodType(Y.foo, x)
x.foo() # TypeError: unbound method foo() must be called with Y instance as first argument (got X instance instead
tmp=x.foo.__self__
x.foo=Y.foo
x.foo.__self__ = tmp # readonly attribute
x.foo.__func__ = Y.bar.__func__ # readonly attribute
Est-il possible de copier fonction d'une classe dans un autre dans l'exécution, sans:
- Héritage (il doit être fait à l'intérieur la méthode de classe instanciée)
- appelant
Y.bar
de l'intérieurx.foo
Avez-vous regardé le modèle de stratégie? –