คำถามติดแท็ก base-class

22
สร้างซิงเกิลตันใน Python
คำถามนี้ไม่ได้มีไว้สำหรับการอภิปรายว่ารูปแบบการออกแบบซิงเกิลตันนั้นน่าพึงพอใจหรือไม่นั้นเป็นรูปแบบการต่อต้านหรือสงครามทางศาสนาใด ๆ แต่เพื่อพูดคุยว่ารูปแบบการใช้งานที่ดีที่สุดในไพ ธ อนนั้นเป็นไปได้อย่างไร ในกรณีนี้ฉันกำหนด 'pythonic ส่วนใหญ่จะหมายถึงว่ามันเป็นไปตามหลักการน้อยมหัศจรรย์' ฉันมีหลายชั้นเรียนซึ่งจะกลายเป็น singletons (กรณีใช้งานของฉันสำหรับคนตัดไม้ แต่นี่ไม่ใช่สิ่งสำคัญ) ฉันไม่ต้องการที่จะถ่วงเวลาเรียนหลายครั้งพร้อมกับเพิ่มชัยชนะเมื่อฉันสามารถสืบทอดหรือตกแต่ง วิธีการที่ดีที่สุด: วิธีที่ 1: มัณฑนากร def singleton(class_): instances = {} def getinstance(*args, **kwargs): if class_ not in instances: instances[class_] = class_(*args, **kwargs) return instances[class_] return getinstance @singleton class MyClass(BaseClass): pass ข้อดี มัณฑนากรเป็นสารเติมแต่งในลักษณะที่มักใช้งานง่ายกว่าการสืบทอดหลายแบบ จุดด้อย ในขณะที่วัตถุที่สร้างขึ้นโดยใช้ MyClass () จะเป็นวัตถุซิงเกิลจริง MyClass …

30
ส่วนต่อประสานกับคลาสฐาน
ฉันควรใช้อินเทอร์เฟซเมื่อใดและควรใช้คลาสพื้นฐานเมื่อใด ควรเป็นอินเทอร์เฟซเสมอหรือไม่หากฉันไม่ต้องการกำหนดวิธีการใช้งานพื้นฐาน ถ้าฉันมีคลาส Dog และ Cat เหตุใดฉันจึงต้องการใช้งาน IPet แทน PetBase ฉันสามารถเข้าใจว่ามีอินเตอร์เฟสสำหรับ ISheds หรือ IBarks (IMakesNoise?) เพราะสามารถวางสัตว์เลี้ยงบนพื้นฐานของสัตว์เลี้ยงได้ แต่ฉันไม่เข้าใจว่าจะใช้สัตว์เลี้ยงทั่วไปชนิดใด

11
ลบตัวชี้ไปยังคลาสย่อยหรือไม่เรียกตัวทำลายคลาสพื้นฐานหรือไม่
ฉันมีอันclass Aที่ใช้การจัดสรรหน่วยความจำฮีปสำหรับหนึ่งในฟิลด์ของมัน คลาส A ถูกสร้างและเก็บเป็นฟิลด์ตัวชี้ในคลาสอื่น ( class B. เมื่อฉันทำกับวัตถุของคลาส B ฉันเรียกdeleteซึ่งฉันคิดว่าเรียกว่า destructor ... แต่สิ่งนี้เรียกว่า destructor ของคลาส A ด้วยหรือไม่ แก้ไข: จากคำตอบที่ฉันใช้ (โปรดแก้ไขหากไม่ถูกต้อง): delete ของอินสแตนซ์ของ B เรียก B :: ~ B (); สายไหน A::~A(); A::~A ควรdeleteกำหนดตัวแปรสมาชิกที่จัดสรรฮีปทั้งหมดของวัตถุ A อย่างชัดเจน ในที่สุดการจัดเก็บหน่วยความจำบล็อกกล่าวว่าตัวอย่างของการเรียน B จะถูกส่งกลับไปยังกอง - เมื่อใหม่ถูกนำมาใช้เป็นครั้งแรกที่จัดสรรบล็อกของหน่วยความจำบนกองก่อสร้างแล้วเรียกเพื่อเริ่มต้นมันตอนนี้หลังจาก destructors ทั้งหมดได้รับการเรียกเพื่อจบวัตถุ บล็อกที่วัตถุที่อยู่จะถูกส่งกลับไปยังกอง

8
หลักการตั้งชื่อคลาส C #: เป็น BaseClass หรือ ClassBase หรือ AbstractClass
แนวทางที่แนะนำในการตั้งชื่อคลาสพื้นฐานคืออะไร? มันนำหน้าชื่อประเภทด้วย " Base " หรือ " Abstract " หรือเราจะต่อท้ายด้วย "Base"? พิจารณาสิ่งต่อไปนี้: ชนิด: ViewModelเช่นMainViewModel , ReportViewModel คลาสฐาน: BaseViewModelหรือViewModelBaseหรือAbstractViewModel พิจารณา: ชนิด: Productเช่นVirtualProduct , ExpiringProduct คลาสฐาน: BaseProductหรือProductBaseหรือAbstractProduct คุณคิดว่ามาตรฐานไหนมากกว่ากัน? class Entity : EntityBase { } หรือ class Entity : BaseEntity { }

27
เป็นไปได้หรือไม่ที่จะกำหนดอ็อบเจ็กต์คลาสพื้นฐานให้กับการอ้างอิงคลาสที่ได้รับด้วยการพิมพ์แบบชัดแจ้ง
เป็นไปได้หรือไม่ที่จะกำหนดอ็อบเจ็กต์คลาสพื้นฐานให้กับการอ้างอิงคลาสที่ได้รับด้วยตัวพิมพ์ที่ชัดเจนใน C #? ฉันได้ลองแล้วและเกิดข้อผิดพลาดรันไทม์
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.