問題タブ [zope.interface]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
0 に答える
237 参照

plone - getMultiAdapter が ComponentLookupError で失敗する

get multi adapter を使用して iterface を検索するコードがあります。マルチアダプターに渡される要素のメンバーの 1 つは、そのインターフェイスを提供していますが、要素自体は提供していません。

マルチアダプターに渡されるものを制御することはできませんが、要素の 1 つを含む要素を制御することはできます。どうすればマークできますか? そこに役立つ可能性のあるものがあることをマルチアダプターに通知するには、provideAdapterFactory(cls, interface) のようなものがありますか?

コード例:

宣言

調べる

ここで、このようなコードを実行すると、ComponentLookupErrorが生成されます。同時に、ルックアップ コードを変更することも、マルチ アダプターの場合も、親が既に別のインターフェイスを実装しているため、親に 'implements(IMarker) を割り当てることもできません。他の多くのものを壊します。

アップデート:

Chapter 6.1 Multi Adapterから理解できる説明を見つけたと思います

更新 2: 単体テスト コードで zca を正しく初期化していないと思います。スニペットを次に示します。

0 投票する
1 に答える
84 参照

python - Interface(obj)とgetAdapter(obj、Interface)間のZopeコンポーネントの不一致

getAdapter(obj、Interface)が適切に適合されたオブジェクトを返すのに、Interface(obj)がobjを返す原因は何でしょうか?

0 投票する
2 に答える
298 参照

python - Zopeインターフェースの継承:interface.providedBy()に表示されないのはなぜですか?

インターフェイスIBをから継承し、 (を実装する)のインスタンスをクエリするためにIA使用すると、との両方がリストに表示されると思います。しかし、そうではないようです。interface.providedBy()BIBIAIB

このコードを実行すると、次の出力が生成されます。

B()出力の最初の行に示されているように、が提供されている場合IA、出力の2番目の行に表示されないのはなぜIAですか?

更新:次の回避策を使用して問題を解決しました。結果にプロバイダークラス、基本クラス(zope.interface.Interface)、またはあらゆる種類の重複を表示することに興味がなかったので、次のことを行いました。

0 投票する
1 に答える
46 参照

adapter - Z で文字列と組み込み型を適応させることはできますか

私は次のようなインターフェースを持っています:

Git と Mercurial の両方にこのインターフェイスを実装しています。ここで、文字列 (パス) を受け取って IRepository を返す、repository-factory を書きたいと思いgitますhg

ただし、単純に言うと:

動作せず、インターフェースstrunicodeサポートしません。IInterface

今のところ、私は行きます:

しかし、文字列オブジェクトとその他の Python 組み込み型のみに一致するインターフェイスがあるかどうかを知りたいです。

0 投票する
0 に答える
342 参照

python - XBMC アドオン開発に Python の twisted.internet を使用するには?

twisted.internet現在作成中の XBMC アドオンにPython モジュールを使用しようとしました。アドオンを実行しようとすると、理解できない例外が発生しました。次の行がすべての問題を引き起こしていることに気付いたとき、私は非常に驚きました。

質問:twisted XBMC アドオンの開発にどのように使用できますか? どんな助けでも大歓迎です!

残念ながら、私は XBMC と XBMC の両方に不慣れでありtwisted、提供できる詳細はほとんどありません。メインスレッドでアドオンが実行されていないと思います。現在、テストには XBMC 11 を使用しています。(更新: XBMC、Python、および の最新の Debian テスト パッケージをtwisted使用しています。モジュールのインポートと使用は、通常のスクリプトと XBMC サービスから機能しますが、XBMC スクリプトからは機能しません。)xbmc.logファイルのスタックトレースは次のとおりです。

これは、関連する最初のエラー メッセージです。

ご協力いただきありがとうございます!

0 投票する
1 に答える
2274 参照

python - Pythonのzope.interface.registryのインポートエラー

仮想環境にプロジェクトをインストールしています。エラーが発生しています

このモジュールのバージョン 4.0.5

私は自分のマシン(仮想環境ではない)で同じことを試しましたが、

ここでfrom zope.interface.registry import Componentsはエラーは発生しませんでした。これによると

、エラーは発生しません。ここで欠けているもの、またはこのエラーを解決する方法について何か提案はありますか?

0 投票する
0 に答える
129 参照

python - Zope コンポーネントで動作する Python ソース アナライザー

Zope コンポーネントを広く使用するコード ベース (Py 2.6 のもの) があり、ソースを分析できるツールが必要です。ツールはソースを分析することになっています。いくつかの制限されたクラス/オブジェクト/インターフェースなどの使用法を探すように。基本的には、ステートメントのコンテキスト (どのクラス/メソッド/関数、どのモジュールなど) を認識しながら、ソース内の各ステートメントをスキャンし、それを分析します。特定のパターン。

ソースをテキスト バッファーに読み込んでパターンを照合するというアプローチは、信頼できるアプローチではないようです。

思いついた別のアプローチはinspectを使用することでしたが、inspect は壊れているようで、コードベースを処理できないようです (複数の試行で、すべて検査がクラッシュしました)。inspectで抜け道があるように見えるので、私はそれをあきらめなければならないかもしれません。

さて、私が考えることができる他のオプションは、pylintを使用するか、ASTを使用することです(そして、それに多くの後処理を行います)。pylintがどの程度拡張可能かはわかりません。ソースステートメントの分析に関しては、pylint がコンテキスト (つまり、どのクラスの defn/function/method がこのステートメントを持っているかなど) を認識することができるかどうかなどです

ここで適切なアプローチとして何を提案しますか? 以前にそのような問題に対処しなければならなかった人はいますか?

提案してください。

0 投票する
2 に答える
544 参照

python - インターフェイスに属性を動的に追加する方法

インターフェイスのすべての属性に属性を追加する必要があります。そのため、動的に変更して追加しようとしていますが、今のところあまり成功していません。

次のインターフェースがあるとしましょう:

そして、私はそれを次のように変更したいと思います:

その後、クラスを修正してみましたが、すでに初期化されているため、スキーマが設定されており、変更方法がわかりませんでした。ディレクティブ (例: interface.Implements()) を書くことも考えましたが、属性を追加するだけではかなり複雑に思えます。

最終的な目標は、一連の Bool ウィジェットを含む z3c.form フィールドセットを追加することです。

それで、Pythonでそれを行う方法はありますか、それともインターフェイスを変更してすべての属性を手動で追加する必要がありますか?

ありがとう !

0 投票する
1 に答える
300 参照

zope.interface - Zope コンポーネントを GlobalSiteManager に登録する意味は何ですか?

Zope コンポーネント アーキテクチャに関する素晴らしいチュートリアルを以下から読んでいます。

http://www.muthukadan.net/docs/zca.html#adapters

アダプターの章 を理解できないようです。

私が間違っている場合は修正してください。上記のクラスFrontDeskNGはアダプターですよね?記事に書かれているように:

FrontDeskNG は、IGuest を適応させる IDesk のアダプターです。

さて、これでアダプターができました。使用する前に に 登録する必要があるのはなぜですか?GlobalSiteManager

私はモバイル ゲームのバックエンドに取り組んでおり、Zope コンポーネント アーキテクチャを調べて、コードをよりモジュール化したいと考えています。ストレージをあらゆるデータベース テクノロジと交換し、コードを引き続き機能させる機能が必要です。これは、ZCA が誇らしげに宣伝しているように思えました。有名な GoF Design Patterns の本を読んだことがないので、ご容赦ください。