คำถามติดแท็ก superclass

12
ข้อผิดพลาด 'ต้องแทนที่วิธี Superclass' หลังจากนำเข้าโครงการลงใน Eclipse
เมื่อใดก็ตามที่ฉันต้องนำเข้าโครงการของฉันอีกครั้งใน Eclipse (ถ้าฉันติดตั้ง Eclipse อีกครั้งหรือเปลี่ยนตำแหน่งของโครงการ) วิธีการที่แทนที่ของฉันเกือบทั้งหมดจะไม่ได้รับการจัดรูปแบบอย่างถูกต้องทำให้เกิดข้อผิดพลาด: วิธีการนั้นจะต้องแทนที่วิธี superclass มันอาจเป็นเรื่องสำคัญที่จะกล่าวถึงสิ่งนี้กับโครงการ 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 …

22
ทำไม super.super.method (); ไม่อนุญาตให้ใช้ใน Java?
ฉันอ่านคำถามนี้และคิดว่าจะแก้ไขได้อย่างง่ายดาย (ไม่ใช่ว่ามันจะไม่สามารถแก้ไขได้โดยไม่ต้องถ้า) สามารถเขียน: @Override public String toString() { return super.super.toString(); } ฉันไม่แน่ใจว่ามันมีประโยชน์ในหลาย ๆ กรณี แต่ฉันสงสัยว่าทำไมมันถึงไม่เป็นเช่นนั้นและหากมีสิ่งนี้ในภาษาอื่น พวกคุณคิดอย่างไร แก้ไข: เพื่อชี้แจง: ใช่ฉันรู้ว่าเป็นไปไม่ได้ใน Java และฉันไม่ควรพลาด นี่คือสิ่งที่ฉันคาดว่าจะทำงานและรู้สึกประหลาดใจที่ได้รับข้อผิดพลาดของคอมไพเลอร์ ฉันเพิ่งมีความคิดและชอบที่จะพูดคุย
360 java  superclass 

7
super () เพิ่ม“ TypeError: ต้องเป็นประเภทไม่ใช่ classobj” สำหรับคลาสสไตล์ใหม่
การใช้งาน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: objectโจอาคิมชี้ให้เห็นว่าการเป็นตัวอย่างใหม่สไตล์ชั้นจะไม่เทียบเท่ากับการเป็น …

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
ทำไมไม่เรียกใช้ superclass __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__()? แก้ไข:มีคำถามที่คล้ายกันมาก: การสืบทอดและการแทนที่__init__ใน Python
133 python  oop  superclass 

5
การสืบทอดและการเอาชนะ __init__ ใน python
ฉันอ่าน '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.