問題タブ [abc]

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

python - 抽象クラスを継承するクラスの更新

私は抽象クラスを持っていshipます。

それから継承する複数のクラスがあります(、、、destroyerなどcruiser... patrol_boat

現在、追加する場合はdef do_more_stuff(self):ship

変更は、コンソールに再入力するまで、どのサブクラスにも影響しません。これを変更するにはどうすればよいですか?

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

python - __name__ の抽象プロパティは適用されません

次のサンプル コードを検討してください。

サブクラスは抽象プロパティを実装していないことに注意してください。__name__実際に__name__が参照されると、親から「抽象」として出力されます。

ただし、それは が__name__ダンダー メソッドであるためでも、@property@abstractmethodデコレータがうまく連携しないという問題のためでもありません。 __add__fromの実装を削除するとSub、それをインスタンス化できなくなるからです。(__add__通常はプロパティではないことはわかっていますが、「実際の」ダンダーメソッドを使用したかったのです)__str__andの実装を削除すると、同じ予想される動作が発生しfooます。__name__このように振る舞うだけです。

__name__この動作を引き起こすのは何ですか?これを回避する方法はありますか、または親 (抽象) 実装に手動で発生させる必要がありTypeErrorますか?

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

python - 「一貫したメソッド解決」エラーのない 2 レベルの抽象クラス階層

2 レベルの抽象クラスと 3 番目のレベルの具象クラスが必要です。

このコードはTypeError: Cannot create a consistent method resolution、 の宣言に対して生成されQuadます。問題は多重継承のあいまいさだと思います。 Quad特定の関数を から直接派生させるか、ABCから直接派生させるかがわかりませんShapeが、どうすれば修正できますか? の宣言から削除することはできません。これは、抽象的ではなくなるためABCです。Quad

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

python - MappingView ABCについて

MappingView コンテナと Sized コンテナの違いは何ですか? MappingView コンテナを実装する方法の例はありますか?

ABC とドキュメントを完全に誤解しているかもしれませんが、MappingView コンテナーは Sized を継承する任意のコンテナーですよね? もしそうなら、なぜ私のダミーの例がうまくいかないのですか?

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

python - python abc クラスを拡張するクラスの自動委譲

一部のクラスがabcクラス(抽象基本クラス)を拡張する場合、すべての抽象メソッドを定義しない限り、インスタンス化できません。しかし、多くの場合、Decorator パターンを実装するときは、いくつかの抽象メソッドだけを定義し、その他は装飾されたオブジェクトに委譲するだけです。これを行う方法?

たとえば、次のコードを機能させたいと考えています。

それ以外の

このために、delegate上記の例のメソッドを実装する必要があります。それを実装する方法は?abc クラスを拡張するクラスの自動委譲を提供する他のいくつかのアプローチも検討される場合があります。

PSここで解決策として継承()を提案しないでくださいclass MyElement(StandardElement)...上記のコードは単なる例です。私の実際のケースでは、MyElement は StandardElement とはかなり異なります。それでも、誰かが StandardElement の代わりに MyElement を使用することになっている場合があるため、MyElement を StandardElement と互換性のあるものにする必要があります。ここでは、「is a」ではなく「has a」関係を実装する必要があります。