0
実行時に他のクラスのメソッドを「盗む」コードがあります。 (これは小さなゲームなので、ボットがオンデマンドで戦略を変えることを許可したい)Pythonでクラスインスタンスにバインドされた非バインドメソッドをコピーする方法
例:
class X(object):
def foo(self):
return 1
class Y(object):
def foo(self):
return 2
私はXクラスのインスタンスに「コピー」Y.fooしたい:
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
は、実行時に他に一つのクラスから機能をコピーする方法はあります、なし:
- 継承(それがインスタンス化クラスのメソッド内で行われるべきである)
Y.bar
からx.foo
はあなたを持っています戦略パターンを見た? –