問題タブ [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.
python - ファクトリとコンポーネントで定義された Zope ユーティリティの違いは何ですか?
Zope ユーティリティの ZCML 登録がコンポーネントまたはファクトリを受け入れることができるのは、少し混乱しています。
<utility component=".some.Class" />
対
<utility factory=".some.Factory" />
違いはなんですか?
python - Python での ImportError のモック
私はこれをほぼ2時間試していますが、運がありません。
次のようなモジュールがあります。
コードの後半:
何か案は?
編集:
アレックスの提案はうまくいかないようです:
テストを実行する場合:
ただし、Python インタラクティブ コンソールから同じコードを実行すると機能します。
より多くの編集:
モジュールのこの部分に固有のすべてのテストをzope.testing
含むテストファイルを使用しています。shorturl.txt
最初に、利用可能なモジュールをインポートしてzope.component
、通常の使用法を実証およびテストします。パッケージがないzope.*
場合はエッジ ケースと見なされるため、後でテストします。したがって、どういうわけか、使用不可にreload()
した後、モジュールに移動する必要があります。zope.*
これまでのところ、tempdir でtempfile.mktempdir()
and emptyzope/__init__.py
とzope/component/__init__.py
files を使用してから、tempdir を に挿入しsys.path[0]
、古いzope.*
パッケージを から削除しようとさえしましたsys.modules
。
どちらも機能しませんでした。
さらに編集:
その間、私はこれを試しました:
そして、テスト スイートの名前空間 (= のすべてのインポート) ではうまく機能しますが、shorturl.txt
私のメイン モジュールでは実行されませんao.shorturl
。私がそれをしたときでさえありませんreload()
。理由はありますか?
インポートするとzope.interfaces
が発生するため、インポートしImportError
た部分に到達せず、 ao.shorturl 名前空間に残ります。どうして?!zope.component
python - Python、Zope コンポーネント アーキテクチャ、アダプターの登録
スタンドアロンの python アプリケーションでは、アプリケーションのアダプターを登録してアクセスするためにzope.interface、zope.componentパッケージを使用します。メタクラスの概念を使用して、メタクラスのinitメソッド内からアダプターを登録できると考えました。これにより、アダプターの登録プロセスが「自動化」されます。たとえば、zope パッケージがクラスに追加する属性を使用するなど、このアプローチに問題はありますか? ご意見をお寄せいただきありがとうございます。
plone - zopeコンポーネントに下位互換性を提供する
私はcollective.imagetagsの新しいリリースに取り組んでいます。このリリースでは、ブラウザービュー()によって実行されていたすべての機能が、ブラウザービューimagetags-manage
とほぼ同じインターフェイスを提供する新しいアダプター(まだコミットされていません)に移動されています。
誰かがプロジェクトでこの製品を使用しているかどうかは本当にわかりませんが、誰かが外部のブラウザビューメソッドを使用している場合に備えて、下位互換性メカニズムを提供することは賢明なアイデアだと思います。ボックス機能。
私は何をすべきか?新しいアダプタを中継するスタブメソッドを使用して、ブラウザビューのインターフェイスを維持しますか?なにか提案を?
python - Zope Component Architecture コンポーネントは、それが実装するインターフェースを記述する必要がありますか?
注: 私は ZCA を初めて使用するので、コードが間違っている可能性があります。ただし、ZCA の仕組みについてはある程度知っています。
たとえば、次のようになります。
このimplements(I1)
行は必要ですか、それとも U1 が I1 を実装していること (Go のインターフェイスのようなもの) を ZCA が独自に判断できますか?
python - Zope コンポーネントのアーキテクチャとコンポーネントの依存関係を理解する
私の質問に適切なタイトルを付けることは非常に困難です。私が理解していることから、アダプターは、コンポーネントを変更せずに、コンポーネントにサービスを追加することです。アダプターは、複数のコンポーネントからサービスを拡張できます。
しかし、コンポーネント間の依存関係はどうですか? この通常の Python コードのように、コンポーネント A (人) とコンポーネント B (タスク) の間の依存関係を設定するにはどうすればよいですか?
2つのクラスを実装すると
それは良い実装ですか?
plone - getMultiAdapter が ComponentLookupError で失敗する
get multi adapter を使用して iterface を検索するコードがあります。マルチアダプターに渡される要素のメンバーの 1 つは、そのインターフェイスを提供していますが、要素自体は提供していません。
マルチアダプターに渡されるものを制御することはできませんが、要素の 1 つを含む要素を制御することはできます。どうすればマークできますか? そこに役立つ可能性のあるものがあることをマルチアダプターに通知するには、provideAdapterFactory(cls, interface) のようなものがありますか?
コード例:
宣言
調べる
ここで、このようなコードを実行すると、ComponentLookupErrorが生成されます。同時に、ルックアップ コードを変更することも、マルチ アダプターの場合も、親が既に別のインターフェイスを実装しているため、親に 'implements(IMarker) を割り当てることもできません。他の多くのものを壊します。
アップデート:
Chapter 6.1 Multi Adapterから理解できる説明を見つけたと思います
更新 2: 単体テスト コードで zca を正しく初期化していないと思います。スニペットを次に示します。
python - Interface(obj)とgetAdapter(obj、Interface)間のZopeコンポーネントの不一致
getAdapter(obj、Interface)が適切に適合されたオブジェクトを返すのに、Interface(obj)がobjを返す原因は何でしょうか?
zope.interface - Zope コンポーネントを GlobalSiteManager に登録する意味は何ですか?
Zope コンポーネント アーキテクチャに関する素晴らしいチュートリアルを以下から読んでいます。
http://www.muthukadan.net/docs/zca.html#adapters
アダプターの章 を理解できないようです。
私が間違っている場合は修正してください。上記のクラスFrontDeskNG
はアダプターですよね?記事に書かれているように:
FrontDeskNG は、IGuest を適応させる IDesk のアダプターです。
さて、これでアダプターができました。使用する前に に 登録する必要があるのはなぜですか?GlobalSiteManager
私はモバイル ゲームのバックエンドに取り組んでおり、Zope コンポーネント アーキテクチャを調べて、コードをよりモジュール化したいと考えています。ストレージをあらゆるデータベース テクノロジと交換し、コードを引き続き機能させる機能が必要です。これは、ZCA が誇らしげに宣伝しているように思えました。有名な GoF Design Patterns の本を読んだことがないので、ご容赦ください。