Ответ
В Python класс и модуль — это фундаментальные механизмы для организации и структурирования кода, но они служат разным целям и имеют различные области применения.
Класс (Class)
Класс — это шаблон или чертеж для создания объектов (экземпляров). Он определяет структуру данных (атрибуты) и поведение (методы), которые будут присущи всем объектам, созданным на его основе. Классы являются основой объектно-ориентированного программирования (ООП) и поддерживают такие принципы, как инкапсуляция, наследование и полиморфизм.
Пример класса:
class Car:
def __init__(self, make, model):
self.make = make
self.model = model
self.speed = 0
def accelerate(self, amount):
self.speed += amount
print(f"{self.make} {self.model} ускоряется до {self.speed} км/ч.")
def get_info(self):
return f"Автомобиль: {self.make} {self.model}, текущая скорость: {self.speed} км/ч."
# Создание объектов (экземпляров) класса Car
my_car = Car("Toyota", "Camry")
my_car.accelerate(60)
print(my_car.get_info())
Модуль (Module)
Модуль — это обычный файл Python (.py
), который содержит определения функций, классов, переменных и исполняемый код. Модули используются для логического группирования связанного кода и обеспечения его повторного использования. Каждый модуль имеет свое собственное пространство имен, что помогает избежать конфликтов имен.
Пример модуля (my_utils.py
):
# my_utils.py
def greet(name):
return f"Привет, {name}!"
class Logger:
def __init__(self, prefix):
self.prefix = prefix
def log(self, message):
print(f"[{self.prefix}] {message}")
VERSION = "1.0"
Использование модуля в другом файле:
# main.py
import my_utils
print(my_utils.greet("Алиса"))
logger = my_utils.Logger("APP")
logger.log("Запуск приложения.")
print(f"Версия утилит: {my_utils.VERSION}")
Ключевые отличия:
- Назначение: Класс — это шаблон для создания объектов, инкапсулирующий данные и поведение. Модуль — это контейнер для организации и повторного использования кода (функций, классов, переменных) в виде файла.
- Экземпляры: Классы инстанцируются для создания множества объектов, каждый со своим состоянием. Модули импортируются один раз за сессию и предоставляют единое пространство имен.
- Состояние: Объекты класса имеют собственное состояние (атрибуты). Модули могут иметь глобальные переменные, но их основная цель — организация кода, а не управление состоянием отдельных сущностей.
- Принципы ООП: Классы являются центральным элементом ООП, поддерживая наследование, полиморфизм и инкапсуляцию. Модули не поддерживают эти принципы напрямую, но могут содержать классы, которые их используют.
- Иерархия: Модули могут содержать несколько классов, функций и переменных. Классы содержат атрибуты и методы.