問題タブ [super]
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.
iphone - uiwebview が応答しない / タッチをスーパーに渡す
そこで、UIWebview をタッチ イベントに応答させたいと考えました。これについていくつかのトピックを読みました。UIWebView のサブクラスを作成し、UIViewController に追加して IB 経由でリンクしました。私のサブクラスでは、終了したタッチをオーバーライドして [super touchedEnded] を呼び出しました。役に立ちませんでした。hittest を上書きしましたが、super も呼び出されません!
このコードをサブクラス化された UIWebView に追加すると:
NSLog(@"ヒット");
自分自身を返します。}
その後、タッチはスーパークラスに転送されますが、ヒットテストはそうではなく (!)、さらに Web ビューのスクロールが停止します。
さて、私は自分のwebviewでタッチを認識してスーパーに渡したいのですが、何が間違っていますか?
編集:
「ヒットテスト」の使用が非常に多くの提案に含まれているのはなぜだろうと思っています-これにより、Webビューをスクロールできなくなります...何かアイデアはありますか?
python - super()で無限再帰を回避する方法は?
私はこのようなコードを持っています:
Bのインスタンス化は期待どおりに機能しますが、Cのインスタンス化は無限に繰り返され、スタックオーバーフローが発生します。どうすればこれを解決できますか?
java - 入力ストリームをフォーマットする正しい方法
次の問題があります。私のプログラムには、内容を制御できない InputStream が渡されます。javax ライブラリを使用して入力ストリームをアンマーシャリングします。これは、InputStream に「amp;」が続かない & 文字が含まれている場合に例外を正しくスローします。
私が思いついた回避策は、次のクラスを作成することでした。
注: StringUtil は、入力ストリームを文字列に変換する必要がある単純なユーティリティです。
そのクラスを配置したら、JAXB アンマーシャラーを次のように呼び出します。
それ以外の
このアプローチは機能しますが、いくつかの理由で奇妙に思えます。
1 - super がコンストラクターの最初の要素でなければならないという制限 (これについて読んだにもかかわらず理解できない制限) のため、すべての処理を 1 行で行う必要があり、コードが読みにくくなっています。
2 - ストリーム全体を文字列に変換してストリームに戻すのはやり過ぎのようです
3 - 上記のコードは、ストリームが amp;amp; を含むという点で少し間違っています。アンプを含むように変更されます。
FormatInputStream クラスに 1 つのメソッドを提供することで、1 に対処できます。
ここで、FormattedStream クラスのコンストラクターで現在行っているのと同じ操作を行いますが、コーディングの制限のために別のインターフェイスを選択する必要があるのは奇妙に思えます。
FormattedStream コンストラクターをシンプルに保つことで、2 に対処できます。
& をオンザフライで置き換えて 3 つの読み取りメソッドをオーバーライドすることは、replaceAll String メソッドを利用できる現在の 1 行のコードと比較すると簡単ではありません。
3に関しては、私はそれについて心配しないで十分なコーナーケースのようですが、おそらく私は...
私の問題をよりエレガントな方法で解決する方法について何か提案はありますか?
java - Java: オーバーライドされたメソッドを呼び出すスーパー メソッドの呼び出し
私の期待される出力:
サブクラス method1
スーパークラス method1
スーパークラス method2
実際の出力:
サブクラス method1
スーパークラス method1
サブクラス method2
私は技術的にパブリックメソッドをオーバーライドしたことを知っていますが、スーパーを呼び出していたため、スーパー内の呼び出しはスーパーに留まり、これは起こっていません。どうすればそれを実現できるかについてのアイデアはありますか?
python - Pythonでスーパークラスのクラス属性にアクセスするにはどうすればよいですか?
次のコードを見てください。
クラスの階層があり、それぞれにいくつかのデフォルト値を含む独自の辞書があります。クラスのインスタンスに特定の属性がない場合は、代わりにそのデフォルト値を返す必要があります。属性のデフォルト値が現在のクラスのdefaults
ディクショナリに含まれていない場合は、スーパークラスのdefaults
ディクショナリを検索する必要があります。
再帰クラスメソッドを使用してこれを実装しようとしていget_default
ます。残念ながら、プログラムは無限再帰でスタックします。私の理解super()
は明らかに欠けています。にアクセスすること__mro__
で、正しく機能させることができますが、これが適切な解決策かどうかはわかりません。
答えはこの記事のどこかにあるように感じますが、まだ見つけることができていません。おそらく、メタクラスの使用に頼る必要がありますか?
編集:私のアプリケーションでは、__getattr__
最初にチェックしますself.base
。そうでない場合はNone
、そこから属性をフェッチする必要があります。それ以外の場合のみ、デフォルト値を返す必要があります。おそらくオーバーライドできます__getattribute__
。それがより良い解決策でしょうか?
編集2:以下は私が探している機能の拡張例です。これは現在、__mro__
(私の元の再帰的方法とは対照的に、unutbuの以前の提案)を使用して実装されています。誰かがよりエレガントな解決策を提案できない限り、私はこの実装を使用して満足しています。これで問題が解決することを願っています。
出力:
python - Python: 複数の派生後にクラスの親クラスを照会する ("super()" は機能しません)
ベースクラスの複数の派生を使用するクラスシステムを構築しました (object->class1->class2->class3):
期待どおりに動作し、次のように出力されます。
今、私は3行を置き換えたいと思います
このようなもので:
基本的に、「classXYZ.doSomething()」と入力する必要のないクラスシステムを作成したいと考えています。
上記のように、「現在のクラスの親クラス」を取得したいと考えています。
3 行を次のように置き換えます。
は機能せず (常に現在のインスタンスの親クラスを返します -> class2)、無限ループの印刷が発生します。
現在のクラスの親クラスを取得できる関数はありますか?
ご協力ありがとうございました!
ヘンリー
--------------------
編集:
@Lennartわかりました多分私はあなたが間違っているかもしれませんが、現時点では私は問題を十分に明確に説明していないと思います.したがって、この例はそれをよりよく説明するかもしれません:
別の子クラスを作成しましょう
class4 からインスタンスを派生させるとどうなるでしょうか?
私はそれが明らかに実行すると思います:
これは次のように翻訳できます。
これは間違いなく目標ではありません(そうなるでしょうclass3.__init__(y)
)
現在、多くの親クラス関数呼び出しを行っています。super() 呼び出しで、すべての関数を異なる基本クラス名で再実装したくありません。
また、私は pythons-class システムに慣れていないので、しばらくお待ちください。
perl - SUPERをオブジェクトのスーパークラスに参照する
oophttp : //perldoc.perl.org/perlobj.htmlについてはperldocを参照してください。
ドキュメントによると、「SUPERは、オブジェクトのスーパークラスではなく、現在のパッケージのスーパークラスを参照していることに注意することが重要です。」
現在、オブジェクトのスーパークラスを参照するためにSUPERが必要な状況にあります。
だから、それを達成するための方法を探しています。
java - javaのスーパーコンストラクター
説明してください
内部に引数がないSuper()は、定義する引数が複数あることを意味しますか?そして、これは「this.xxx」の助けを借りて行われますか?
なぜ「パブリッククラスContact」自体で定義するのか。なぜここで再度定義し、その引数を呼び出したのですか?
python - Python: クラスで「super」を使用できないのはなぜですか?
super
を使用してクラスのスーパークラスのメソッドを取得できないのはなぜですか?
例:
(もちろん、これは私ができる簡単なケースですがA.my_method
、ダイヤモンド継承のケースにはこれが必要でした。)
のドキュメントによるとsuper
、私が望むことが可能であるように思われます。これはsuper
のドキュメントです: (強調は私のものです)
super()
-> と同じsuper(__class__, <first argument>)
super(type)
-> バインドされていないスーパー オブジェクト
super(type, obj)
-> バインドされたsuper
オブジェクト; 必要isinstance(obj, type)
super(type, type2) -> バインドされたスーパー オブジェクト; issubclass(type2, type) が必要です
[関連性のない例は編集済み]