問題タブ [zope.component]

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 投票する
2 に答える
319 参照

python - ファクトリとコンポーネントで定義された Zope ユーティリティの違いは何ですか?

Zope ユーティリティの ZCML 登録がコンポーネントまたはファクトリを受け入れることができるのは、少し混乱しています。

<utility component=".some.Class" />

<utility factory=".some.Factory" />

違いはなんですか?

0 投票する
3 に答える
4949 参照

python - Python での ImportError のモック

私はこれをほぼ2時間試していますが、運がありません。

次のようなモジュールがあります。

コードの後半:

何か案は?

編集:

アレックスの提案はうまくいかないようです:

テストを実行する場合:

ただし、Python インタラクティブ コンソールから同じコードを実行すると機能します。

より多くの編集:

モジュールのこの部分に固有のすべてのテストをzope.testing含むテストファイルを使用しています。shorturl.txt最初に、利用可能なモジュールをインポートしてzope.component、通常の使用法を実証およびテストします。パッケージがないzope.*場合はエッジ ケースと見なされるため、後でテストします。したがって、どういうわけか、使用不可にreload()した後、モジュールに移動する必要があります。zope.*

これまでのところ、tempdir でtempfile.mktempdir()and emptyzope/__init__.pyzope/component/__init__.pyfiles を使用してから、tempdir を に挿入しsys.path[0]、古いzope.*パッケージを から削除しようとさえしましたsys.modules

どちらも機能しませんでした。

さらに編集:

その間、私はこれを試しました:

そして、テスト スイートの名前空間 (= のすべてのインポート) ではうまく機能しますが、shorturl.txt私のメイン モジュールでは実行されませんao.shorturl。私がそれをしたときでさえありませんreload()。理由はありますか?

インポートするとzope.interfacesが発生するため、インポートしImportErrorた部分に到達せず、 ao.shorturl 名前空間に残ります。どうして?!zope.component

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

python - Python、Zope コンポーネント アーキテクチャ、アダプターの登録

スタンドアロンの python アプリケーションでは、アプリケーションのアダプターを登録してアクセスするためにzope.interfacezope.componentパッケージを使用します。メタクラスの概念を使用して、メタクラスのinitメソッド内からアダプターを登録できると考えました。これにより、アダプターの登録プロセスが「自動化」されます。たとえば、zope パッケージがクラスに追加する属性を使用するなど、このアプローチに問題はありますか? ご意見をお寄せいただきありがとうございます。

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

plone - zopeコンポーネントに下位互換性を提供する

私はcollective.imagetagsの新しいリリースに取り組んでいます。このリリースでは、ブラウザービュー()によって実行されていたすべての機能が、ブラウザービューimagetags-manageとほぼ同じインターフェイスを提供する新しいアダプター(まだコミットされていません)に移動されています。

誰かがプロジェクトでこの製品を使用しているかどうかは本当にわかりませんが、誰かが外部のブラウザビューメソッドを使用している場合に備えて、下位互換性メカニズムを提供することは賢明なアイデアだと思います。ボックス機能。

私は何をすべきか?新しいアダプタを中継するスタブメソッドを使用して、ブラウザビューのインターフェイスを維持しますか?なにか提案を?

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

python - Zope Component Architecture コンポーネントは、それが実装するインターフェースを記述する必要がありますか?

注: 私は ZCA を初めて使用するので、コードが間違っている可能性があります。ただし、ZCA の仕組みについてはある程度知っています。

たとえば、次のようになります。

このimplements(I1)行は必要ですか、それとも U1 が I1 を実装していること (Go のインターフェイスのようなもの) を ZCA が独自に判断できますか?

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

python - Zope コンポーネントのアーキテクチャとコンポーネントの依存関係を理解する

私の質問に適切なタイトルを付けることは非常に困難です。私が理解していることから、アダプターは、コンポーネントを変更せずに、コンポーネントにサービスを追加することです。アダプターは、複数のコンポーネントからサービスを拡張できます。

しかし、コンポーネント間の依存関係はどうですか? この通常の Python コードのように、コンポーネント A (人) とコンポーネント B (タスク) の間の依存関係を設定するにはどうすればよいですか?

2つのクラスを実装すると

それは良い実装ですか?

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 投票する
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 の本を読んだことがないので、ご容赦ください。