問題タブ [abstract-base-class]

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 に答える
64 参照

python - Pydantic を使用して Python ABC インターフェイス パターンを作成する方法

抽象基本クラス (戦略パターンと呼ばれる) を使用して Python インターフェイスを実装しています。これを Pydantic で実行できるようにしたいと考えています。

Pydantic がなければ、次のようなプロパティを使用します。

このように、次のような別のクラスを実装する場合

その場合、インターフェイスはエラーをスローします。これは、 から継承する新しいクラスを制約するのに役立ちますPersonEntity

ただし、この情報を FastAPI 応答オブジェクトに吐き出したいのです。各プロパティ フィールドのすべての値と、プロパティ フィールドだけを取得する何らかのシリアライザーを考え出さないと、これを行うことはできません (これは苦労しています)。

私はむしろPydanticを使用したいと思います。この場合、プロパティは必要ありません。次のように簡単に実行できます。

これらは必要な方法でシリアル化されますが、プロパティがなくなり、使用できないため、インターフェイス機能が失われます @abstractproperty

だから私が実装するなら

pydantic がこれを許可しているため、エラーはありません。

(ちなみに、これらの例では、子クラスで BaseModel から継承するかどうかはわかりませんでした。)

PersonEntityABCクラスに含まれていないフィールドが導入されたときにエラーをスローして、必要なインターフェイス動作を提供するために Pydantic モデルを制約する方法はありますか?

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

python - Python: さまざまな型の基本クラスを実装する

さまざまな型の基本クラスのサブクラスを実装する方法があるのだろうか。各サブクラスは、基本クラスと同じ動作を提供しながら、個別の入力と出力の型を持つ必要があります。

背景: 電圧と温度のサンプルを処理したいと考えています。100 個の電圧サンプルが VoltageDataset を形成します。100 の温度サンプルが TemperatureDataset を形成します。複数の VoltageDataset が VoltageDataCluster を形成します。温度も同じ。データセットの処理は、物理量によって異なります。電圧関連の処理を温度サンプルに適用できないようにするために、タイプヒントを追加したいと思います。

そのため、VoltageDataClustes メソッド append_dataset が VoltageDataset を入力タイプとしてのみ許可することを定義する方法があればいいと思います。温度も同じ。

コピー&ペーストせずにこの動作を実装する方法はありますか?

ありがとう!ニクラス