タグ付けされた質問 「superclass」

12
プロジェクトをEclipseにインポートした後の「スーパークラスメソッドをオーバーライドする必要がある」エラー
プロジェクトをEclipseに再インポートする必要がある場合(Eclipseを再インストールした場合、またはプロジェクトの場所を変更した場合)は、オーバーライドされたメソッドのほとんどすべてが正しくフォーマットされていないため、エラーが発生します。 メソッドはスーパークラスメソッドをオーバーライドする必要があります これは、何らかの理由でAndroidプロジェクトで発生することであり、メソッドの引数の値が常に入力されるとは限らないため、手動で手動で入力する必要があることに注意してください。例えば: list.setOnCreateContextMenuListener(new OnCreateContextMenuListener() { //These arguments have their correct names public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo) { } }); 最初は次のように入力されます: list.setOnCreateContextMenuListener(new OnCreateContextMenuListener() { //This methods arguments were not automatically provided public void onCreateContextMenu(ContextMenu arg1, View arg2, ContextMenuInfo arg3) { } }); 奇妙なことに、コードを削除してEclipseが自動的にメソッドを再作成すると、すでに持っているのと同じ引数名が使用されるため、問題の場所が本当にわかりません。それ以外は、メソッドを自動フォーマットします私。 これは、オーバーライドされたメソッドをすべて手動で手動で再作成しなければならないので、非常に面倒になります。なぜこれが起こるのか、またはそれを修正する方法を誰かが説明できる場合。とてもうれしくなる。 多分それは別のメソッドの引数の中にあるメソッドをフォーマットしている方法が原因ですか?

22
なぜsuper.super.method(); Javaでは許可されていませんか?
私はこの質問を読み、次のように書くことができれば簡単に解決できると思います(それがなければ解決できないわけではありません)。 @Override public String toString() { return super.super.toString(); } それが多くの場合に役立つかどうかはわかりませんが、なぜそれが役に立たないのか、そしてこのようなものが他の言語に存在するのかどうか疑問に思います。 皆さんはどう思いますか? 編集: 明確にするために:はい、わかっています。それはJavaでは不可能であり、見逃すことはありません。これは私が期待していたことではなく、コンパイラエラーが発生して驚いていました。私はちょうどアイデアを持っていて、それについて議論したいです。
360 java  superclass 

7
super()は、新しいスタイルのクラスに対して「TypeError:classobjではなく、typeでなければならない」を発生させます。
次の使用はsuper()TypeErrorを発生させます:なぜですか? >>> from HTMLParser import HTMLParser >>> class TextParser(HTMLParser): ... def __init__(self): ... super(TextParser, self).__init__() ... self.all_data = [] ... >>> TextParser() (...) TypeError: must be type, not classobj StackOverflowにも同様の質問があります。Pythonのsuper()がTypeErrorを発生させます。エラーは、ユーザークラスが新しいスタイルのクラスではないという事実によって説明されます。ただし、上記のクラスは以下から継承するため、新しいスタイルのクラスobjectです。 >>> isinstance(HTMLParser(), object) True 何が欠けていますか?どうすればsuper()ここで使用できますか? のHTMLParser.__init__(self)代わりにsuper(TextParser, self).__init__()を使用すると機能しますが、TypeErrorを理解したいと思います。 PS:Joachimは、新しいスタイルのクラスのインスタンスであることはであることと同等ではないと指摘しましたobject。私は何度も反対を読んでいるため、混乱しています(インスタンステストに基づく新しいスタイルのクラスインスタンステストのobject例:https : //stackoverflow.com/revisions/2655651/3)。

2
Rubyクラスが別のクラスのサブクラスであるかどうかをテストする
クラスが別のクラスから継承するかどうかをテストしたいのですが、そのためのメソッドが存在しないようです。 class A end class B < A end B.is_a? A => false B.superclass == A => true 私が欲しいものの簡単な実装は次のようになります: class Class def is_subclass_of?(clazz) return true if superclass == clazz return false if self == Object superclass.is_subclass_of?(clazz) end end しかし、私はこれがすでに存在することを期待します。

9
スーパークラスの__init__メソッドが自動的に呼び出されないのはなぜですか?
他の一部の言語のように、Python設計者がサブクラスの__init__()メソッドが__init__()スーパークラスのメソッドを自動的に呼び出さないと決定したのはなぜですか?Pythonicと推奨されるイディオムは本当に次のようなものですか? class Superclass(object): def __init__(self): print 'Do something' class Subclass(Superclass): def __init__(self): super(Subclass, self).__init__() print 'Do something else'

7
__init __()は親クラスの__init __()を呼び出す必要がありますか?
私はObjective-Cでこの構文を使用していることに慣れています。 - (void)init { if (self = [super init]) { // init class } return self; } Pythonは、親クラスの実装も呼び出す必要があります__init__か? class NewClass(SomeOtherClass): def __init__(self): SomeOtherClass.__init__(self) # init class これはまたのための真/偽のです__new__()と__del__()? 編集:非常によく似た質問があります:Pythonでの継承とオーバーライド__init__
132 python  oop  superclass 

5
Pythonでの__init__の継承とオーバーライド
私は「Dive Into Python」を読んでいて、クラスの章でこの例を示しています: class FileInfo(UserDict): "store file metadata" def __init__(self, filename=None): UserDict.__init__(self) self["name"] = filename その後、作成者は、__init__メソッドをオーバーライドする場合は__init__、正しいパラメーターを使用して親を明示的に呼び出す必要があると述べています。 そのFileInfoクラスに複数の祖先クラスがある場合はどうなりますか? すべての祖先クラスの__init__メソッドを明示的に呼び出す必要がありますか? また、オーバーライドしたい他のメソッドに対してこれを行う必要がありますか?
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.