Исправить неправильно реализованный класс Lab

PythonPythonBeginner
Практиковаться сейчас

💡 Этот учебник переведен с английского с помощью ИИ. Чтобы просмотреть оригинал, вы можете перейти на английский оригинал

Введение

В этом проекте вы научитесь реализовывать и тестировать класс Lab в коде backend LabEx. Класс Lab является ядром, представляющим эксперимент в платформе LabEx.

👀 Предварительный просмотр

lab.tags=['python', 'data science','machine learning']
может ли user1 запустить эксперимент: True
может ли user2 запустить эксперимент: False

🎯 Задачи

В этом проекте вы научитесь:

  • Как реализовать метод insert_tag, чтобы гарантировать, что дублирующиеся теги не добавляются в объект лаборатории
  • Как реализовать метод can_be_started, чтобы определить, может ли пользователь запустить эксперимент, разрешая это только аутентифицированным и членским пользователям
  • Как протестировать класс Lab, чтобы убедиться, что он работает как ожидается

🏆 Достижения

После завершения этого проекта вы сможете:

  • Разобраться в важности правильной реализации ядрых классов в backend-системе
  • Показать способность писать чистый, поддерживаемый и безошибочный код для класса
  • Получить опыт в тестировании и проверке функциональности класса

Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL python(("Python")) -.-> python/ControlFlowGroup(["Control Flow"]) python(("Python")) -.-> python/ObjectOrientedProgrammingGroup(["Object-Oriented Programming"]) python/ControlFlowGroup -.-> python/conditional_statements("Conditional Statements") python/ObjectOrientedProgrammingGroup -.-> python/classes_objects("Classes and Objects") python/ObjectOrientedProgrammingGroup -.-> python/constructor("Constructor") subgraph Lab Skills python/conditional_statements -.-> lab-302729{{"Исправить неправильно реализованный класс Lab"}} python/classes_objects -.-> lab-302729{{"Исправить неправильно реализованный класс Lab"}} python/constructor -.-> lab-302729{{"Исправить неправильно реализованный класс Lab"}} end

Реализация класса Lab

В этом шаге вы научитесь реализовывать класс Lab в файле lab.py. Следуйте шагам ниже, чтобы выполнить этот шаг:

  1. Откройте файл lab.py в предпочитаемом редакторе кода.
  2. Найдите определение класса Lab.
  3. Измените метод __init__ на следующий код:
def __init__(self, name, tags=None):
    self.name = name
    self._tags = [] if tags is None else [tags]
  1. Реализуйте метод insert_tag, чтобы гарантировать, что дублирующиеся теги не вставляются в объект лаборатории. Вы можете сделать это, проверив, существует ли тег уже в списке self._tags, прежде чем добавить его.
def insert_tag(self, tag):
    """Insert tags and check if the tag already exists"""
    if tag not in self._tags:
        self._tags.append(tag)
  1. Реализуйте метод can_be_started, чтобы определить, может ли пользователь запустить эксперимент. Этот метод должен возвращать True, если пользователь аутентифицирован и является членом, и False в противном случае.
def can_be_started(self, user):
    """Check if the user can start the experiment, only logged-in member users can start the experiment"""
    if user.is_authenticated and user.is_member:
        return True
    else:
        return False
  1. Сохраните файл lab.py.

Тестирование класса Lab

В этом шаге вы протестируете класс Lab, чтобы убедиться, что он работает как ожидается. Следуйте шагам ниже, чтобы выполнить этот шаг:

  1. Откройте файл lab.py в редакторе кода.
  2. Найдите код внизу файла, который создает объект Lab и тестирует метод can_be_started.
  3. Запустите файл lab.py с помощью следующей команды:
python lab.py
  1. Просмотрите вывод, который должен быть таким:
lab.tags=['python', 'data science','machine learning']
может ли user1 запустить эксперимент: True
может ли user2 запустить эксперимент: False

Этот вывод подтверждает, что класс Lab работает как ожидается, с поведением следующим:

  • Объект Lab имеет ожидаемые теги без дубликатов.
  • Метод can_be_started правильно определяет, что аутентифицированный и членский user1 может запустить эксперимент, а неаутентифицированный и нечленский user2 - нет.
✨ Проверить решение и практиковаться

Резюме

Поздравляем! Вы завершили этот проект. Вы можете практиковаться в более многих лабораторных работах в LabEx, чтобы улучшить свои навыки.