مقدمه

با افزایش تعداد کلاس‌ها در یک پروژه، قرار دادن تمام آنها در یک فایل واحد، کد شما را شلوغ و مدیریت آن را دشوار می‌کند. همانطور که توابع را در ماژول‌های جداگانه سازماندهی کردیم، می‌توانیم و باید همین کار را برای کلاس‌ها نیز انجام دهیم. با قرار دادن کلاس‌های مرتبط در یک ماژول، می‌توانید فایل‌های پروژه خود را کوتاه‌تر، تمیزتر و منطقی‌تر نگه دارید.

یک مثال: ماژول خودرو

بیایید کلاس‌های Car و ElectricCar را که در درس‌های قبل ساختیم، به یک ماژول جداگانه به نام car.py منتقل کنیم.

Copy Icon car.py
"""A set of classes used to represent gas and electric cars."""

class Car:
    # ... (The full Car class from the previous lesson) ...

class ElectricCar(Car):
    # ... (The full ElectricCar class from the previous lesson) ...

اکنون که کلاس‌های ما در ماژول car.py قرار دارند، می‌توانیم این ماژول را در یک فایل دیگر import کرده و از این کلاس‌ها برای ساخت نمونه‌های جدید استفاده کنیم.

روش‌های مختلف Import کردن

مشابه وارد کردن توابع، روش‌های مختلفی برای وارد کردن کلاس‌ها از یک ماژول وجود دارد.

۱. وارد کردن کل ماژول

در این روش، کل ماژول را وارد کرده و سپس با استفاده از نشانه‌گذاری نقطه، به کلاس‌های مورد نظر دسترسی پیدا می‌کنیم.

Copy Icon PYTHON
import car

my_beetle = car.Car('volkswagen', 'beetle', 2019)
print(my_beetle.get_descriptive_name())

my_tesla = car.ElectricCar('tesla', 'roadster', 2024)
print(my_tesla.get_descriptive_name())

این روش بسیار خوانا است، زیرا به وضوح نشان می‌دهد که کلاس‌های Car و ElectricCar از ماژول car آمده‌اند. این روش به خصوص زمانی که با ماژول‌های بزرگ و متعدد کار می‌کنید، از تداخل نام‌ها جلوگیری می‌کند.

۲. وارد کردن کلاس‌های خاص

شما می‌توانید تنها کلاس‌هایی را که به آنها نیاز دارید، از یک ماژول وارد کنید.

Copy Icon PYTHON
from car import Car, ElectricCar

my_beetle = Car('volkswagen', 'beetle', 2019)
print(my_beetle.get_descriptive_name())

my_tesla = ElectricCar('tesla', 'roadster', 2024)
print(my_tesla.get_descriptive_name())

این روش کد شما را کمی کوتاه‌تر می‌کند، زیرا دیگر نیازی به نوشتن پیشوند car. قبل از نام کلاس‌ها نیست.

وارد کردن تمام کلاس‌های یک ماژول

هرچند استفاده از ستاره (*) برای وارد کردن تمام کلاس‌های یک ماژول ممکن است، اما این روش توصیه نمی‌شود.

Copy Icon PYTHON
from car import *

my_beetle = Car('volkswagen', 'beetle', 2019)

مشکل این روش این است که مشخص نیست کدام کلاس‌ها از ماژول وارد شده‌اند. این کار می‌تواند منجر به سردرگمی و تداخل نام با کلاس‌ها یا توابعی شود که در فایل فعلی شما تعریف شده‌اند. بهتر است همیشه یا کل ماژول را وارد کنید یا فقط کلاس‌هایی را که به آنها نیاز دارید، به صورت صریح وارد کنید.

در این درس، یاد گرفتیم که چگونه با قرار دادن کلاس‌های مرتبط در ماژول‌های جداگانه، کدهای خود را سازماندهی کنیم. این یک گام مهم برای نوشتن برنامه‌های بزرگ و قابل نگهداری است. در درس بعدی، به بررسی «کتابخانه استاندارد پایتون» خواهیم پرداخت و با برخی از ماژول‌ها و کلاس‌های مفیدی که به صورت پیش‌فرض در پایتون وجود دارند، آشنا خواهیم شد.