การทำให้การนำเข้าใน Python ของคุณง่ายขึ้น: วิธีการนำเข้าตามคลาส แทนไฟล์
เมื่อทำงานกับ Python โดยเฉพาะในโครงการขนาดใหญ่ การจัดการการนำเข้าให้มีประสิทธิภาพจึงกลายเป็นเรื่องสำคัญ คุณอาจพบว่าต้องการเข้าถึงคลาสโดยตรงจากแพ็กเกจของพวกมัน แทนที่จะเป็นไฟล์ที่เกี่ยวข้อง วิธีนี้สามารถทำให้โค้ดของคุณสะอาดขึ้นและอ่านง่ายขึ้น ในบทความบล็อกนี้เราจะพูดถึงวิธีการทำเช่นนี้ในโครงการ Python ของคุณด้วยโครงสร้างที่ง่าย
ปัญหา
พิจารณาโครงสร้างไฟล์ต่อไปนี้สำหรับแอปพลิเคชัน Python ของคุณ:
app/
app.py
controllers/
__init__.py
project.py
plugin.py
ในกรณีนี้ หากคุณกำหนดคลาส Project
ในไฟล์ project.py
การนำเข้ามันใน app.py
จะมีลักษณะดังนี้:
from app.controllers.project import Project
แต่ถ้าคุณต้องการให้คำสั่งนำเข้าของคุณสั้นและสะอาดขึ้นล่ะ? คุณอาจต้องการนำเข้ามันแบบนี้:
from app.controllers import Project
วิธีนี้ไม่เพียงแต่ทำให้คำสั่งนำเข้าของคุณเรียบง่าย แต่ยังทำให้ฐานข้อมูลโค้ดของคุณมีระเบียบมากขึ้น คำถามเกิดขึ้น: คุณจะตั้งค่านี้ได้อย่างไร?
วิธีแก้ปัญหา
เพื่อทำให้กระบวนการนำเข้าของคุณเป็นไปอย่างราบรื่นและอนุญาตให้ทำการนำเข้าคลาสโดยตรงจากแพ็กเกจ คุณจำเป็นต้องปรับเปลี่ยนไฟล์ __init__.py
ที่ตั้งอยู่ในไดเรกทอรี controllers
เล็กน้อย
คู่มือทีละขั้นตอน
-
เปิดไฟล์
__init__.py
: ไฟล์นี้มักใช้สำหรับการเริ่มต้นแพ็กเกจ Python ของคุณ และช่วยให้คุณควบคุมว่าคุณจะนำเข้าสิ่งใดเมื่อคุณนำเข้าแพ็กเกจเอง -
เพิ่มคำสั่งนำเข้า: เพื่อให้คลาส
Project
สามารถนำเข้าได้โดยตรงจากcontrollers
ให้เพิ่มบรรทัดต่อไปนี้ในไฟล์__init__.py
ของคุณ:from project import Project
นี่บอกกับ Python ว่าให้ทำการนำเข้าคลาส
Project
จากproject.py
โดยอัตโนมัติเมื่อคุณนำเข้าแพ็กเกจcontrollers
-
ปรับให้เหมาะสมสำหรับการนำเข้าสัมบูรณ์: ด้วยการเปิดตัวของ Python 2.7 เป็นต้นไป การนำเข้าสัมบูรณ์จะกลายเป็นโหมดเริ่มต้นสำหรับการนำเข้า เพื่อหลีกเลี่ยงความขัดแย้งที่อาจเกิดขึ้นกับโมดูลระดับสูงที่อาจไม่มีเจตนาที่จะแชร์ชื่อ (เช่น
project
) เป็นการดีที่จะเพิ่มจุดเพื่อแสดงถึงการนำเข้าสัมพัทธ์ ดังนั้นคุณจะปรับคำสั่งนำเข้าในไฟล์__init__.py
ของคุณเป็น:from .project import Project
นี่แสดงให้เห็นว่าคลาส
Project
ถูกนำเข้าจากแพ็กเกจปัจจุบัน (controllers
)
ข้อคิดสำคัญ
- โดยการปรับเปลี่ยนไฟล์
__init__.py
ของคุณ คุณจะทำให้การนำเข้าของคุณมีประสิทธิภาพมากขึ้น - การใช้จุด (.) หน้าชื่อโมดูลช่วยให้มั่นใจว่าคุณกำลังอ้างถึงโมดูลที่ถูกต้อง ซึ่งเป็นสิ่งที่มีประโยชน์โดยเฉพาะในแอปพลิเคชันขนาดใหญ่ที่มีความขัดแย้งชื่อที่เป็นไปได้
- แนวปฏิบัตินี้ไม่เพียงแต่เพิ่มความอ่านง่ายของโค้ดของคุณ แต่ยังช่วยคุณรักษาโครงสร้างที่ชัดเจนเมื่อโครงการของคุณขยายตัว
สรุป
โดยการทำตามขั้นตอนง่ายๆ ที่กล่าวถึงข้างต้น คุณสามารถพัฒนาวิธีการเขียนโค้ด Python ของคุณโดยทำให้การนำเข้าของคุณตรงไปตรงมามากขึ้น เทคนิคนี้ไม่เพียงแต่ประหยัดเวลา แต่ยังส่งผลต่อโค้ดที่สะอาดและบำรุงรักษาได้ง่าย โปรดจำไว้ว่าแอปพลิเคชันที่มีโครงสร้างดีเริ่มต้นจากการจัดการการนำเข้าของคุณอย่างมีประสิทธิภาพ!
ลองทดลองใช้แนวทางนี้ในโครงการของคุณเองและดูความแตกต่างที่เกิดขึ้น!