問題タブ [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.
python - 抽象クラスを継承するクラスの更新
私は抽象クラスを持っていship
ます。
それから継承する複数のクラスがあります(、、、destroyer
などcruiser
... patrol_boat
)
現在、追加する場合はdef do_more_stuff(self):
、ship
変更は、コンソールに再入力するまで、どのサブクラスにも影響しません。これを変更するにはどうすればよいですか?
python - __name__ の抽象プロパティは適用されません
次のサンプル コードを検討してください。
サブクラスは抽象プロパティを実装していないことに注意してください。__name__
実際に__name__
が参照されると、親から「抽象」として出力されます。
ただし、それは が__name__
ダンダー メソッドであるためでも、@property
と@abstractmethod
デコレータがうまく連携しないという問題のためでもありません。 __add__
fromの実装を削除するとSub
、それをインスタンス化できなくなるからです。(__add__
通常はプロパティではないことはわかっていますが、「実際の」ダンダーメソッドを使用したかったのです)__str__
andの実装を削除すると、同じ予想される動作が発生しfoo
ます。__name__
このように振る舞うだけです。
__name__
この動作を引き起こすのは何ですか?これを回避する方法はありますか、または親 (抽象) 実装に手動で発生させる必要がありTypeError
ますか?
python - 「一貫したメソッド解決」エラーのない 2 レベルの抽象クラス階層
2 レベルの抽象クラスと 3 番目のレベルの具象クラスが必要です。
このコードはTypeError: Cannot create a consistent method resolution
、 の宣言に対して生成されQuad
ます。問題は多重継承のあいまいさだと思います。 Quad
特定の関数を から直接派生させるか、ABC
から直接派生させるかがわかりませんShape
が、どうすれば修正できますか? の宣言から削除することはできません。これは、抽象的ではなくなるためABC
です。Quad
python - MappingView ABCについて
MappingView コンテナと Sized コンテナの違いは何ですか? MappingView コンテナを実装する方法の例はありますか?
ABC とドキュメントを完全に誤解しているかもしれませんが、MappingView コンテナーは Sized を継承する任意のコンテナーですよね? もしそうなら、なぜ私のダミーの例がうまくいかないのですか?
python - python abc クラスを拡張するクラスの自動委譲
一部のクラスがabcクラス(抽象基本クラス)を拡張する場合、すべての抽象メソッドを定義しない限り、インスタンス化できません。しかし、多くの場合、Decorator パターンを実装するときは、いくつかの抽象メソッドだけを定義し、その他は装飾されたオブジェクトに委譲するだけです。これを行う方法?
たとえば、次のコードを機能させたいと考えています。
それ以外の
このために、delegate
上記の例のメソッドを実装する必要があります。それを実装する方法は?abc クラスを拡張するクラスの自動委譲を提供する他のいくつかのアプローチも検討される場合があります。
PSここで解決策として継承()を提案しないでくださいclass MyElement(StandardElement)
...上記のコードは単なる例です。私の実際のケースでは、MyElement は StandardElement とはかなり異なります。それでも、誰かが StandardElement の代わりに MyElement を使用することになっている場合があるため、MyElement を StandardElement と互換性のあるものにする必要があります。ここでは、「is a」ではなく「has a」関係を実装する必要があります。