問題タブ [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 投票する
3 に答える
1450 参照

c++ - C++:クラスにメンバー関数がない場合、抽象基本クラスを作成する方法は?

基本クラスへのポインターの配列を作成できるようにする目的に役立つ抽象基本クラスがあります。(「多くのこと」に役立ちます...)

私の抽象基本クラスにはメンバー関数が含まれていません。したがって、純粋な仮想メソッドは存在しないため、技術的に抽象的ではないと思います。

ただし、このクラスのインスタンスを作成できるようにしたくありません。

メンバーなしの抽象基本クラスを作成することは可能ですか? そうでない場合、「抽象ベース」のインスタンスが作成されないようにする別の解決策はありますか? コンストラクタを作るだけでprotected十分ですか?

実際、そのクラスの目的が基本クラスへのポインターのベクトルまたは配列を作成できるようにすることである場合、抽象基本クラスは必要ないことが指摘されました-単純に基本クラスを持たず、継承階層の最上位にあるクラスを基本クラスとして使用します。または、その最上位クラスをコピーして貼り付け、実装されたメソッドを実装のない純粋な仮想関数に交換することもできますが、これは抽象ベース ポインターの考え方と論理的に矛盾しているように思われ、コードの保守がより困難になります。

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

python - 抽象基本クラス Sequence の issubclass

このリストは、クラスが Sequence として「見なされる」ために実装する必要があるメソッドを示しています: __getitem____len____contains____iter____reversed__indexおよびcount. では、なぜこの最小限の実装が機能しないのissubclass(S, Sequence) is Falseでしょうか。

私が見落としていた、実装する必要がある追加の方法はありますか? 抽象基底クラスを誤解していませんか? もちろん、サブクラス化Sequenceは元issubclassに戻りますTrueが、それは abc の背後にあるアイデアを打ち負かしますよね?

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

python - コレクションから辞書と abc.Mapping を使用した isinstance は何をしていますか?

私が実行しているコードは次のとおりです。

の意味は理解できますが、 from のisinstance意味がわかりません。abc.Mappingcollections

辞書であることを確認するために行isinstance(mydict, abc.Mapping)が使用されているようですか?mydict

もっと簡単にできると思いません isinstance(mydict, dict)か?

私はいくつかの検索を行い、このスレッドで関連するコメントを見つけました: What is the best (idiomatic) way to check the type of a Python variable? abc.Mapping、しかし、ここで単に使用するよりも使用する方が好ましい理由を理解するのにまだ苦労していdictます。

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

c++ - C++ で抽象クラスを返すより良い方法はありますか?

モックを使用した単体テストを容易にするために、いくつかのインターフェイスを C++ コードに挿入したいと考えています。

これに関する問題は、C++ のメソッドから抽象クラスを返すのが面倒なことです。値で返すことはできないため、ポインターまたは参照を返す必要があります。

過去 6 ~ 7 年間の C++ のすべての開発を考えると、抽象基底クラスを返すためのより良い方法があるかどうかを尋ねてみようと思いました。ノイズのないインターフェイスは次のようになりますが、これは不可能だと確信しています。

過去にこれを行ったことを覚えている方法は、ポインターを使用することです (おそらく現在はスマートポインターです)。

ポインターの問題は、私が実際に nullptr を利用するつもりがないことです。したがって、値ではなくポインターを処理するオーバーヘッドとノイズは、リーダーとして何の価値もありません。

これを処理するために私が知らないより良い方法はありますか?

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

c++ - 基底クラスへのポインターの配列: 独自の派生クラス メソッドを呼び出す方法

これについてしばらくグーグルで調べましたが、明確な答えが見つからないようです。

次の例で unscramble() メソッドを呼び出すにはどうすればよいですか?

ありがとう。:^)

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

python - __sub__ と __rsub__ が実装されているのはなぜですか。

モジュールComplex内のの実装を見ていたところ、次のような実装に気付きました。numbers__sub____rsub__

これは私を混乱させました。

第一に、なぜこれらが実装されたのかよくわかりません (のすべてのサブクラスがそれにフォールバックできると思いますか?)。第二に、実装にこのようなComplex単項を使用することを選択した理由がわかりません。-

何か案は?

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

c# - Microsoft.fakes を使用して、派生クラスのパブリック メソッドから基本抽象クラスの保護されたメソッドへのモック呼び出し

Microsoft.Fakesを使用して、以下に示すコードの単体テストを作成しようとしています。

Microsoft.Fakes の新機能として、抽象基本クラスの保護された関数メソッドの呼び出しをモックする際に困難に直面しています

私の基本クラス:

私の子クラス:

モックのために次の単体テストコードを試しましたが、うまくいきませんでした:

注:私の抽象基本クラスの保護されたメソッドは複雑な操作を実行するため、モックする必要があります。上記のコードは単なるサンプルです。

任意のポインタをいただければ幸いです!