質問

していまpythonヒューズに基づいたプロジェクトXmp例のヒューズます。付属のコードをどのようにこの作品。何らかの理由get_fileせ呼ばれることになり、そのクラスで作成され、の代わりにヒューズです。read()のクラスからget_file(file_class)ヒューズに常に呼び出し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株 https://code.launchpad.net/~asa-エアーズ/+junk/dstorage
bzr支店lp:~asa-エアーズ/dstorage/トランク

【解決
使用したプロキシクラスをサブクラスの必要はコンストラクタを取得します。クラスのインスタンスが必要で上書きすべての代理の方法にしなければなインスタンス。

役に立ちましたか?

解決

のコードのヒューズクラスは迷路のtwisty少し路の作成方法任代理人)は、このビット(閉鎖を用いたセッター内 Fuse.MethodProxy._add_class_type, 線865):

        def setter(self, xcls):

            setattr(self, type + '_class', xcls)

            for m in inits:
                self.mdic[m] = xcls

            for m in proxied:
                if hasattr(xcls, m):
                    self.mdic[m] = self.proxyclass(m)

だけど、 self.file_class = self.get_file, このが呼び出され self.get_file, である結合方法。ループの上にのみ有用性が期待できるとの属性のクラス設定したちに見てもらうとともに、その mdic プロキシ辞書後の包装してではないで下の方法ではなくクラスです。でんで帰呼び出して Dstorage.

なので、長い話を短くすれば使用できなくなる呼び出し可能オブジェクトを返すインスタンス(のような疑似クラス)の代わりにクラスで、ここでヒューズはintrospectingのオブジェクトに設定する方法で電話します。

に割り当てる必要がありクラス file_class -が必要な場合については、親会社インスタンスを使用でき入れ子のクラスからはdocsに入ります。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top