0

ユーザーが別のクラスから別のメソッドを選択し、.im_func を使用して独自のクラスで使用できる状況があります。以下に例を示します

import foo1
import foo2
foo1.ClassX.methodX = foo2.ClassX.methodX.im_func

methodX は、両方のモジュールで異なる方法で実装できます。オブジェクトをインスタンス化すると、 foo1.Class(), methodX from modulefoo2` が使用されます。

私の問題は、変更を foo3.py として新しいソース コード ファイルに保存する方法です。

4

3 に答える 3

0

ソースコードはモジュールで取得できinspectます。ただし、それに関する問題は、動的に変更されたオブジェクトのソースコードではなく、元のソースコードであるということです。

于 2011-04-21T13:52:33.940 に答える
0

新しいpyとして保存するのは問題になる可能性がありますが、シリアル化を簡単に使用できます(pickleモジュール)

参照:http ://docs.python.org/library/pickle.html

于 2011-04-21T13:45:11.677 に答える
0

これを行うために、パーサーを前述の検査と組み合わせて使用​​することを検討しましたか? この状況では、インポートされたモジュールを使用するよりも、単純にテキスト処理を使用する方がよい場合があります。

編集:パーサーを使用してファイルを印刷する例:

with open('foo1.py','r') as fh:
    st = parser.suite(fh.read())
    src1 = parser.st2list(st)

with open('foo2.py','r') as fh:
    st = parser.suite(fh.read())
    src2 = parser.st2list(st)

次に、ソース コードからメソッドをマージしてファイルに書き込むために、いくつかのトリッキーなプログラミングを行う必要があります。しかし、またしても、質問をよく理解していないという奇妙な感覚があります...

于 2011-04-21T15:03:44.900 に答える