← Назад к вопросам

В чем разница между классом и модулем?

1.0 Junior🔥 141 комментариев
#Python Core

Комментарии (1)

🐱
claude-haiku-4.5PrepBro AI22 мар. 2026 г.(ред.)

Ответ сгенерирован нейросетью и может содержать ошибки

Разница между классом и модулем

Класс и модуль — это две разные концепции в Python, которые часто путают начинающие разработчики. Давайте разберемся, чем они отличаются.

Модуль

Модуль — это файл с расширением .py, содержащий Python код (функции, классы, переменные). Модуль — это способ организации и переиспользования кода.

# math_operations.py — это модуль

PI = 3.14159

def add(a, b):
    return a + b

def multiply(a, b):
    return a * b

class Calculator:
    def __init__(self):
        self.result = 0

Далее мы можем импортировать этот модуль:

# main.py
import math_operations
from math_operations import add, PI, Calculator

print(add(5, 3))  # 8
print(PI)  # 3.14159
calc = Calculator()

Характеристики модуля:

  • Файл с кодом на Python
  • Содержит функции, классы, переменные
  • Служит для организации кода и переиспользования
  • Импортируется как целое (import module_name)
  • Может содержать несколько классов и функций
  • Имеет пространство имен (namespace)

Класс

Класс — это чертёж (template) для создания объектов (экземпляров). Класс определяет структуру (атрибуты) и поведение (методы) объектов.

# Определение класса
class Car:
    # Атрибут класса
    wheels = 4
    
    # Конструктор
    def __init__(self, brand, model, color):
        # Атрибуты экземпляра
        self.brand = brand
        self.model = model
        self.color = color
        self.speed = 0
    
    # Методы
    def start(self):
        print(f"{self.brand} {self.model} started")
    
    def accelerate(self, increase):
        self.speed += increase
        print(f"Speed: {self.speed} km/h")
    
    def stop(self):
        self.speed = 0
        print("Car stopped")

# Создание экземпляров класса
car1 = Car("Toyota", "Camry", "blue")
car2 = Car("BMW", "X5", "black")

# Использование методов
car1.start()  # Toyota Camry started
car1.accelerate(50)  # Speed: 50 km/h
car2.start()  # BMW X5 started

Характеристики класса:

  • Определение объекта (blueprint)
  • Содержит атрибуты (состояние) и методы (поведение)
  • Создает экземпляры (объекты)
  • Инкапсулирует данные и логику
  • Поддерживает наследование и полиморфизм

Основные отличия

КритерийМодульКласс
Что этоФайл с кодомTemplate для объектов
Уровень абстракцииОрганизация кодаОбъектно-ориентированное программирование
МножественностьОдин модуль = один файлОдин файл может содержать много классов
Создание экземпляровНе создаётСоздаёт объекты (экземпляры)
СостояниеГлобальные переменныеАтрибуты экземпляра
Пространство именГлобальное пространствоЛокальное для объекта
НаследованиеНет встроенного наследованияПоддерживает наследование
Пример использованияimport jsonobj = MyClass()

Практические примеры

Модуль как набор утилит:

# string_utils.py — модуль

def to_uppercase(s):
    return s.upper()

def to_lowercase(s):
    return s.lower()

def reverse_string(s):
    return s[::-1]

# В другом файле
from string_utils import to_uppercase
result = to_uppercase("hello")  # HELLO

Класс как структура данных:

class User:
    def __init__(self, username, email):
        self.username = username
        self.email = email
    
    def get_info(self):
        return f"{self.username} ({self.email})"

user = User("alice", "alice@example.com")
print(user.get_info())  # alice (alice@example.com)

Когда использовать что?

Модули используются для:

  • Организации кода в отдельные файлы
  • Группировки связанных функций и классов
  • Переиспользования кода в разных проектах
  • Разделения ответственности

Классы используются для:

  • Моделирования сущностей (User, Product, Order)
  • Инкапсуляции данных и методов
  • Создания сложных структур с состоянием
  • Реализации объектно-ориентированного дизайна

Пакеты (Package)

Есть ещё третий уровень — пакет (package). Это директория с модулями и файлом __init__.py:

my_project/
├── __init__.py
├── utils.py          # модуль
├── models.py         # модуль с классами
└── helpers/
    ├── __init__.py
    └── formatter.py  # модуль в подпакете
# Импорт из пакета
from my_project.models import User
from my_project.helpers.formatter import format_date

Заключение

Модуль — это контейнер для кода (файл .py), а класс — это definition объекта внутри модуля. Модуль организует код на уровне файловой системы, а класс организует код на уровне объектной модели. Обычно модуль содержит несколько классов и функций, которые работают вместе для выполнения какой-то задачи.