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

คลาสย่อยคือคลาสที่ได้มาหรือสืบทอดมาจากคลาสพาเรนต์ (หรือซูเปอร์) Subclassing ถูกใช้อย่างกว้างขวางในการเขียนโปรแกรมเชิงวัตถุ (OOP)

5
ฉันจะตรวจสอบว่าประเภทเป็นประเภทย่อยหรือชนิดของวัตถุได้อย่างไร
ในการตรวจสอบว่าประเภทเป็นประเภทย่อยเป็นประเภทอื่นใน C # หรือไม่เป็นเรื่องง่าย: typeof (SubClass).IsSubclassOf(typeof (BaseClass)); // returns true อย่างไรก็ตามสิ่งนี้จะล้มเหลว: typeof (BaseClass).IsSubclassOf(typeof (BaseClass)); // returns false มีวิธีใดที่จะตรวจสอบว่าประเภทเป็นคลาสย่อยหรือคลาสพื้นฐานเองโดยไม่ต้องใช้ORโอเปอเรเตอร์หรือใช้วิธีการขยายหรือไม่
335 c#  reflection  types  subclass 


16
คุณจะค้นหาคลาสย่อยทั้งหมดของคลาสที่กำหนดใน Java ได้อย่างไร?
มีวิธีการอย่างไรและพยายามค้นหาคลาสย่อยทั้งหมดของคลาสที่กำหนด (หรือผู้พัฒนาระบบทั้งหมดของอินเตอร์เฟสที่กำหนด) ใน Java? ณ ตอนนี้ฉันมีวิธีการทำเช่นนี้ แต่ฉันพบว่ามันค่อนข้างไม่มีประสิทธิภาพ (ที่จะพูดน้อย) วิธีการคือ: รับรายการชื่อคลาสทั้งหมดที่มีอยู่บนเส้นทางคลาส โหลดแต่ละคลาสและทดสอบเพื่อดูว่าเป็นคลาสย่อยหรือตัวดำเนินการของคลาสหรืออินเตอร์เฟสที่ต้องการ ใน Eclipse มีคุณสมบัติที่ดีที่เรียกว่าลำดับชั้นของประเภทที่จัดการเพื่อแสดงสิ่งนี้ได้อย่างมีประสิทธิภาพ วิธีการหนึ่งไปและทำโดยทางโปรแกรม?

9
ฉันจะตรวจสอบ (ที่รันไทม์) ได้อย่างไรถ้าคลาสหนึ่งเป็นคลาสย่อยของอีกคลาส?
สมมติว่าฉันมีคลาส Suit และคลาสย่อยสี่ชุด: Heart, Spade, Diamond, Club class Suit: ... class Heart(Suit): ... class Spade(Suit): ... class Diamond(Suit): ... class Club(Suit): ... ฉันมีวิธีการที่ได้รับชุดสูทเป็นพารามิเตอร์ซึ่งเป็นวัตถุคลาสไม่เป็นตัวอย่าง แม่นยำมากขึ้นอาจได้รับเพียงหนึ่งในสี่ค่า: Heart, Spade, Diamond, Club ฉันจะยืนยันซึ่งยืนยันสิ่งนั้นได้อย่างไร สิ่งที่ต้องการ: def my_method(suit): assert(suit subclass of Suit) ... ฉันใช้ Python 3
197 python  subclass  assert 

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'

10
คลาสนามธรรมในภาษาสวิฟท์
มีวิธีในการสร้างคลาสนามธรรมในภาษา Swift หรือนี่เป็นข้อ จำกัด เช่นเดียวกับ Objective-C หรือไม่? ฉันต้องการสร้างคลาสนามธรรมเปรียบได้กับสิ่งที่ Java กำหนดเป็นคลาสนามธรรม


3
รับฟังก์ชั่นแทนที่ของคลาสย่อย
มีวิธีรับฟังก์ชั่น overriden ทั้งหมดของคลาสย่อยใน Python หรือไม่? ตัวอย่าง: class A: def a1(self): pass def a2(self): pass class B(A): def a2(self): pass def b1(self): pass นี่ฉันต้องการจะได้รับรายการ["a2"]สำหรับวัตถุของคลาสB(หรือสำหรับวัตถุชั้นเอง) ตั้งแต่ระดับแทนที่เพียงวิธีการเดียวคือBa2

1
ทำไมการทำคลาสย่อยใน Python ทำให้ช้าลงมาก?
ผมทำงานในระดับที่เรียบง่ายที่ขยายdictและฉันรู้ว่าการค้นหาที่สำคัญและการใช้pickleมีมากช้า ฉันคิดว่ามันเป็นปัญหากับชั้นเรียนของฉันดังนั้นฉันจึงทำการทดสอบเล็กน้อย: (venv) marco@buzz:~/sources/python-frozendict/test$ python --version Python 3.9.0a0 (venv) marco@buzz:~/sources/python-frozendict/test$ sudo pyperf system tune --affinity 3 [sudo] password for marco: Tune the system configuration to run benchmarks Actions ======= CPU Frequency: Minimum frequency of CPU 3 set to the maximum frequency System state ============ CPU: use 1 logical CPUs: 3 …

1
Setter คุณสมบัติสำหรับคลาสย่อยของ Pandas DataFrame
ฉันกำลังพยายามตั้งค่าคลาสย่อยของpd.DataFrameที่มีสองข้อโต้แย้งที่จำเป็นเมื่อเริ่มต้น ( groupและtimestamp_col) ฉันต้องการเรียกใช้การตรวจสอบความถูกต้องของข้อโต้แย้งเหล่านั้นgroupและtimestamp_colดังนั้นฉันจึงมีเมธอด setter สำหรับแต่ละคุณสมบัติ งานนี้ทั้งหมดจนกว่าฉันพยายามที่จะและได้รับset_index() TypeError: 'NoneType' object is not iterableแต่ดูเหมือนว่ามันไม่มีค่าจะถูกส่งผ่านไปยังฟังก์ชั่นตั้งค่าของฉันในและtest_set_index test_assignment_with_indexed_objถ้าฉันเพิ่มif g == None: returnฟังก์ชัน setter ของฉันฉันสามารถผ่านกรณีทดสอบ แต่ไม่คิดว่าเป็นทางออกที่เหมาะสม ฉันจะใช้การตรวจสอบคุณสมบัติสำหรับอาร์กิวเมนต์ที่ต้องการเหล่านี้ได้อย่างไร ด้านล่างเป็นชั้นเรียนของฉัน: import pandas as pd import numpy as np class HistDollarGains(pd.DataFrame): @property def _constructor(self): return HistDollarGains._internal_ctor _metadata = ["group", "timestamp_col", "_group", "_timestamp_col"] @classmethod def _internal_ctor(cls, *args, **kwargs): kwargs["group"] …
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.