منبع اصلی نوشتار زیر در این لینک قرار دارد

ماژول‌ها و پایتون

python modules

Post Qrcode

توی پروژه‌های کوچیک می‌شه همه‌ی کلاس‌های مورد نیاز رو در ابتدای یک فایل نوشت و در ادامه‌ی اون بقیه‌ی کد‌های مورد نیاز پروژه رو نوشت. امّا وقتی پروژه پیشرفت می‌کنه و بزرگ‌تر می‌شه استفاده از این روش دردسر سازه برای مثال اگه کلاسی نیاز به ویرایش داشته باشه پیدا کردن اون از بین انبوهی از کد‌ها سخته. اینجا دقیقاً همون‌جایی هست که ماژول وارد می‌شود!

در حقیقت ماژول چیزی غیر از یک فایل پایتون ساده نیست. یعنی یک فایل پایتون یک ماژول هست، دوتا فایل پایتون ۲تا ماژول، و اگر ما ۲تا فایل در یک مسیر داشته باشیم می‌تونیم کلاسی رو از یکی از اونها به دیگری وارد (load) کرده و استفاده کنیم.

برای مثال اگه یه پروژه‌ی تجارت الکترونیک داشته باشیم، نیاز داریم اطلاعاتی رو داخل پایگاه‌داده ذخیره کنیم. ما می‌تونیم تمام کلاس‌ها و توابع مورد نیاز برای ارتباط با پایگاه‌داده رو داخل یک ماژول (که می‌شه حدس زد اسمش database.py خواهد بود) قرار بدیم. بدین ترتیب بقیه‌ی ماژول‌ها (مثل customers, product و …) برای ارتباط با پایگاه‌داده می‌تونن کلاس‌ و تابع مورد نیاز خودشون رو از داخل ماژول پایگاه‌داده ایمپورت (import) کرده و استفاده کنن.

جمله‌ی import برای وارد کردن ماژول، یک کلاس تا تابع خاص از داخل ماژول مورد نظر به کار می‌ره. فرض کردیم که یک ماژول به اسم database.py داریم که یک کلاس به اسم DataBase داره و یک ماژول دیگه به اسم products.py داریم که مسئول مسائل مربوط به محصولات هست و برای اجرای کوئری روی جدول محصولات به کلاس DataBase از ماژول database.py نیاز داره. نحو‌های مختلفی برای ایمپورت ماژول وجود داره:

import database
db = database.DataBase()

با این ساختار ایمپورت، همه‌ی کلاس‌ها و توابع موجود در ماژول database با استفاده از ساختار‪ database.<foobar>‬ در دسترس هستن.

با استفاده از ساختار from … import می‌تونیم فقط یک کلاس خاص رو ایمپورت کنیم:

from database import DataBase
db = DataBase

اگر به هر دلیلی ماژول products از قبل کلاسی به اسم DataBase داشته باشه برای جلوگیری از اشتباه می‌شه اسم کلاس رو موقع ایمپورت عوض کرد:

from database import DataBase as DB
db = DB

اگر ماژول database یک کلاس دیگر به اسم Query داشته باشه که لازم به ایمپورت اون هم داشته باشم می‌تونیم به جای دستورات:

from database import DataBase
from database import Query

چندین کلاس رو در یک خط ایمپورت کنیم:

from database import DataBase, Query

در برخی منابع گفته شده که می‌شه برای ایمپورت همه‌ی کلاس‌ها و توابع یک ماژول از ساختار زیر هم استفاده کرد:

from database import *

امّا بنا به دلایلی که در پست بعدی بررسی شون می‌کنیم توصیه‌ی اکید شده تا حد امکان از ساختار‪ import * ‬استفاده نکنیم.

 

منبع:

ترجمه‌ی آزاد از صفحات ۴۳ و ۴۴ کتاب Python 3 Object Oriented Programming نوشته‌ی Dusty Phillips

 



برچسب ها : , , , , , , , ,

به سیاره لینوکس امتیاز دهید

به اين صفحه امتياز دهيد