ในรหัสของฉันทั้งสองตัวเลือกข้างต้นจะทำงานได้ดีเท่า ๆ กัน แต่ฉันสนใจที่จะหาข้อดีและข้อเสียของทั้งสองวิธี
ในรหัสของฉันทั้งสองตัวเลือกข้างต้นจะทำงานได้ดีเท่า ๆ กัน แต่ฉันสนใจที่จะหาข้อดีและข้อเสียของทั้งสองวิธี
คำตอบ:
มันสุจริตขึ้นอยู่กับความต้องการของคุณ ส่วนใหญ่โมดูลการทำงานจะเป็นสิ่งที่คุณกำลังมองหา
Python คลาส (imho) ไม่ควรคิดเหมือนคลาสใน C # หรือ C ++ หรือ Java จำเป็นต้องมีเหตุผลเชิงตรรกะในการจัดกลุ่มชุดของฟังก์ชั่นเป็นพาเรนต์ที่ใหญ่กว่าโครงสร้างข้อมูลจะเป็นตัวอย่างที่ดีของสิ่งนี้คุณต้องการ ชุดของฟังก์ชันที่สอดคล้องกันที่ใช้โดยตรงกับคลาสแทนที่จะเป็นชุดของฟังก์ชันที่รวบรวมไว้อย่างหลวม ๆ ซึ่งมีวัตถุประสงค์ทั่วไป
โมดูลสำหรับการจัดกลุ่มแบบลำดับชั้นโดยรวมของระบบที่คล้ายกันฉันมักจะมีฟังก์ชั่นยูทิลิตี้ทั้งหมดภายใต้โมดูลเดียวข้อมูลทั้งหมดภายใต้อีกชั้นข้อมูลของฉันและการเชื่อมต่อภายใต้โมดูลประเภท "ผู้ปกครอง" มากขึ้น เนื่องจากโมดูลเป็นเพียงการจัดกลุ่มทางจิตจึงไม่เกี่ยวกับประเภทของระบบที่มีอยู่ในนั้น (คลาสหรือฟังก์ชั่นโดยสุจริตอาจเป็นการผสมผสานระหว่างสองระบบ) และอื่น ๆ เกี่ยวกับการเชื่อมต่อแบบลอจิคัลระหว่างระบบภายใต้โมดูล
คำถามพื้นฐานคือถ้าคุณต้องการอินสแตนซ์ต่าง ๆของโมดูล / คลาสของคุณ โมดูลหลามก็เหมือนกับซิงเกิลตัน - คุณอ้างถึงวัตถุเดียวกันเสมอเช่นถ้าคุณต้องการอินสแตนซ์คุณต้องมีคลาส
อย่างไรก็ตามหากคุณไม่ต้องการอินสแตนซ์คุณอาจยังจำเป็นต้องตั้งค่า "วัตถุ" ให้อยู่ในสถานะเริ่มต้น ในขณะที่สิ่งนี้เป็นไปได้อย่างชัดเจนกับโมดูลธรรมดาหากการเริ่มต้นมีความซับซ้อนมากกว่าการตั้งค่าบางอย่างฉันขอแนะนำให้เตรียมรหัสใน__init__
วิธีการของชั้นเรียนเพื่อให้สามารถอ่านได้