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

«В чем разница между классом и объектом класса?» — вопрос из категории Скриптинг и автоматизация, который задают на 23% собеседований Devops Инженер. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Это базовое понятие ООП, которое я часто использую при написании скриптов для автоматизации на Python или Go.

  • Класс — это шаблон, чертеж или описание. Он определяет структуру (какие данные будут храниться — атрибуты) и поведение (какие действия можно выполнять — методы). Сам по себе класс не занимает память для хранения данных. Это просто код.
  • Объект (экземпляр класса) — это конкретная реализация, созданная по этому шаблону. Он занимает память, хранит конкретные данные в своих атрибутах и может выполнять методы, определенные в классе.

Практический пример из автоматизации на Python:

# КЛАСС - чертеж для создания серверов
class EC2Instance:
    def __init__(self, instance_id, instance_type, state='stopped'):
        # Атрибуты, которые будут у каждого объекта
        self.instance_id = instance_id
        self.instance_type = instance_type
        self.state = state

    # Метод, который могут вызывать объекты
    def start_instance(self):
        # Здесь была бы логика вызова AWS SDK (boto3)
        self.state = 'running'
        print(f'Instance {self.instance_id} is now {self.state}')

# ОБЪЕКТЫ - конкретные серверы, созданные по чертежу
web_server = EC2Instance('i-1234567890', 't3.medium', 'stopped')
db_server = EC2Instance('i-0987654321', 'm5.large', 'running')

print(web_server.instance_id)  # Вывод: i-1234567890
print(db_server.state)         # Вывод: running
web_server.start_instance()    # Вывод: Instance i-1234567890 is now running

В инфраструктурном коде классы помогают создавать абстракции (например, KubernetesDeployment, TerraformModule), что делает код более организованным и переиспользуемым.