問題タブ [subclass]
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.
c# - C#: サブクラス リスト?
EqualCondition独自の interface を実装するクラスがありICondition、メソッドは 1 つだけですSatisfiedBy(Something)。
そのIConditionため、実装は非常に簡単です。今、私はCombinationConditionそれを実装する を作成しようとしています。アイデアは、成功するかどうかを決定する のCombinationConditionリストを含むものです。IConditionSatisfiedBy
私の最初の考えはCombinationCondition実装することでしIList<Something>たが、すぐに複製しているだけであることに気付きましたList<Something>。では、なぜそれをサブクラス化しないのでしょうか?
SatisfiedByをサブクラス化した場合の実装方法についてもう一度考え始めるまで、その考えはうまく聞こえましたList<Something>。私はする必要があります:
しかし、内部リストにアクセスするにはどうすればよいでしょうか?
iphone - UITextField の drawTextInRect が呼び出されない
この SO questionへの回答を実装しようとしています。問題は次のとおりです:-[drawTextInRect]は明らかに呼び出され-[drawRect]ておらず、シャドウを設定しても UITextField のテキストはシャドウされません。
もう 1 つの奇妙な点は、-[drawTextInRect]とのサブクラスの実装-[drawRect]が完全に空 (super の呼び出しでさえない) であっても、テキスト フィールドのテキストが描画されることです。
objective-c - NSButton サブクラスでのテキストの描画
NSButton サブクラスのボタンのタイトルからテキストを追加するにはどうすればよいですか?
nhibernate - Hibernate のサブクラスと複合キー
複合キーを持ち、完全に機能しているクラス StoreHours があります。別のタイプの時間を返してほしいという新たな要求が出てきました。私は「単純です。基本クラスを抽象化し、2 つの具体的な実装を用意して、アプリ内の参照を新しいクラスの 1 つに変更します」と考えました。ただし、それを行うと、単体テストは失敗しました
X.Test.StoreTest.HoursTest: NHibernate.InstantiationException: 抽象クラスまたはインターフェースをインスタンス化できません: X.Model.StoreHours
私のマッピングファイルは次のようになります
ここで同様の問題を抱えている人を見つけて、彼らの解決策をたどり始めましたが、実際には、最初よりもさらに多くの問題が発生しました。
レコードをデータベースに完全に永続化できますが、オンロードすると、「OfficeHours」から強力な型セットしか取得していないにもかかわらず、NHibernate は抽象的な「StoreHours」をインスタンス化しようとしています。
これは本当に些細な要件のように思えるので、何か単純な間違いをしているに違いないと思います。すべてのヒントに感謝します。
objective-c - NSButton サブクラスを持つ NSShadow
これが私のコードです:
問題は、NSShadow が NSBezierPath 'aPath' ではなくテキストの背後にあることです。NSBezierPath に影を追加するにはどうすればよいですか?
objective-c - ObjectiveC-サブクラスオブジェクトの継承された変数を初期化する
MyClassクラスがあります。ここでは誇張していますが、MyClassに1000個のインスタンス変数があるとしましょう。次に、MyClassが持つすべてのインスタンス変数に加えてもう1つを使用して、MySubClassというサブクラスを作成します。
質問:クラスMyClassのオブジェクトMyObjが与えられた場合、MyDerivedObjのインスタンス変数がMyObjのインスタンス変数と同じになるように、クラスMySubClassの対応するオブジェクトMyDerivedObjを作成する簡単な方法はありますか?「同じ」とは、MyObjのインスタンス変数がオブジェクトへのポインタである場合、MyDerivedObjの対応するインスタンス変数が同じメモリを指す必要があるという意味で、強く同じを意味します。
python - サブクラス化dict:dict .__ init __()を呼び出す必要がありますか?
これは、理論的な部分と実際的な部分の2つの質問です。
dictをサブクラス化する場合:
dict.__init__(self)「安全」対策と同じように(たとえば、重要な実装の詳細が重要な場合に)呼び出す必要がありますか?呼び出されdict.__init__()ない場合、Pythonの将来のバージョンでコードが破損するリスクはありますか?私はここで、どちらか一方を行う根本的な理由を探しています(実際には、電話dict.__init__()は安全です)。
私の推測では、ImageDB.__init__(self, directory)が呼び出されたとき、selfはすでに新しい空のdictオブジェクトであり、したがって呼び出す必要はありませんdict.__init__(最初はdictを空にしたいです)。これは正しいです?
編集:
上記の基本的な質問の背後にあるより実用的な質問は次のとおりです。私は(常にdb.contents […]を実行する代わりに)db […]構文を頻繁に使用するため、dictをサブクラス化することを考えていました。オブジェクトの唯一のデータ(属性)は、実際には実際にはdictです。get_image_by_name()データベースにいくつかのメソッド(たとえば、、、など)を追加し、get_image_by_code()をオーバーライドするだけにします__init__()。これは、イメージデータベースがそれを含むディレクトリによって定義されているためです。
要約すると、(実用的な)質問は次のようになります。初期化が異なり(ディレクトリ名のみを使用する)、追加のメソッドがあることを除いて、辞書のように動作するものの適切な実装は何ですか?
「工場」は多くの回答で言及されました。つまり、すべてを要約すると、dictをサブクラス化し、メソッドをオーバーライド__init__()して追加しますか、それとも、メソッドを追加するdictを返す(ファクトリ)関数を記述しますか?ファクトリ関数は、追加のセマンティクスとメソッドがあることをタイプが示さないオブジェクトを返すため、最初のソリューションを好む傾向がありますが、どう思いますか?
編集2:
新しいクラスが「辞書ではない」場合、特にその__init__メソッドがdictと同じ引数を取ることができない__init__場合(「実用的な質問」の場合)、 dictをサブクラス化することはお勧めできません。その上)。言い換えれば、私が正しく理解していれば、コンセンサスは次のように思われます。サブクラス化する場合、すべてのメソッド(初期化を含む)は基本クラスのメソッドと同じシグネチャを持っている必要があります。これにより、isinstance(subclass_instance、dict)は、たとえば、のsubclass_instance.__init__()ように使用できることを保証できます。dict.__init__()
次に、別の実用的な質問が表示されます。初期化メソッドを除いて、dictと同じようなクラスをどのように実装する必要がありますか?サブクラス化せずに?これには、面倒なボイラープレートコードが必要になりますね。
c++ - std::stringの拡張に関するC++の第一人者の意見が必要です
私はいつもSTLの文字列にもう少し機能を追加したいと思っていました。STL型のサブクラス化はノーノーなので、ほとんどの場合、これらのクラスの拡張の推奨される方法は、型を最初の引数として取る関数(メンバー関数ではない)を記述することです。
私はこのソリューションにわくわくしたことはありません。1つは、そのようなすべてのメソッドがコード内のどこにあるかが必ずしも明らかではないこと、もう1つは、構文が好きではないことです。使いたい。メソッドを呼び出すとき!
少し前に私は次のことを思いついた:
StringBoxは構築のためにstd::stringへの参照を必要とすることに注意してください...これはその使用にいくつかの興味深い制限を課します(そして私はそれが文字列クラスの拡散問題に寄与しないことを意味します)...私自身のコードでは、ほとんどの場合、std :: stringを変更するために、メソッドのスタックで宣言しているだけです。
使用例は次のようになります。
私の質問は次のとおりです。StackOverflowコミュニティのC++の第一人者は、このSTL拡張の方法についてどう思いますか?
zend-framework - zend_form アクセス親フォーム要素
サブクラス化されたフォームで親フォーム要素を使用する方法に関する参照が見つかりませんでした。それは私以外の誰にとっても明らかだからかもしれません。それは私を困惑させました。これは私が試したものです。
最初に、フォームコンストラクター内で呼び出しました
次に、このように親要素にアクセスしました
問題は、明示的に呼び出されたかどうかにかかわらず、すべての親フォーム要素が表示されることでした。誰かが言った、「__construct() を使わないで、代わりに init() 関数を使ってください。そこで、コンストラクタを init() に変更し、親コンストラクタをコメントアウトして、フォームを実行しました。 setName() の値が空です。すべての seName() 呼び出しをコメントアウトし、フォームを実行しましたが、サブクラス化されたフォームでインスタンス化された要素のみを表示しました。
私の質問は次のとおりです。親コンストラクターを使用しない場合、親のフォーム要素を取得して使用するにはどうすればよいですか?
解決済み: コンストラクターが init に切り替えられたため、親への呼び出しも切り替える必要がありました。PHPのバックグラウンドを持つ人にとっては簡単です。そうでない人にとってはそれほどではありません。
使用する