ヒューズのドキュメントにあるXmpの例に基づいたPythonヒューズプロジェクトがあります。これがどのように機能するかを示すために、コードの一部を含めました。何らかの理由でget_fileが呼び出され、クラスが作成されますが、fuseがget_file(file_class)からクラスで.read()を呼び出す代わりに、fuseはDstorage.read()を呼び出し続けます。これにより、読み取り関数をその外に移動する目的が無効になります。クラス。
class Dstorage(Fuse, Distributor):
def get_file(self, server, path, flags, *mode):
pass
# This does some work and passes back an instance of
# a class very similar to XmpFile
def main(self, *a, **kw):
self.file_class = self.get_file
return Fuse.main(self, *a, **kw)
コードをランチパッドでホストしています。このコマンドでダウンロードできます。
bzr co https://code.launchpad.net/~asa-ayers/+junk/dstorage
bzr branch lp:〜asa-ayers / dstorage / trunk
解決策:
必要なものをサブクラス化するプロキシクラスを使用し、コンストラクターで必要なクラスのインスタンスを取得し、プロキシのすべてのメソッドを上書きして、インスタンスメソッドを呼び出すだけです。