잘못 구현된 Lab 클래스 수정

PythonBeginner
지금 연습하기

소개

이 프로젝트에서는 LabEx 백엔드 코드에서 Lab 클래스를 구현하고 테스트하는 방법을 배우게 됩니다. Lab 클래스는 LabEx 플랫폼 내에서 실험을 나타내는 핵심 구성 요소입니다.

👀 미리보기

lab.tags=['python', 'data science', 'machine learning']
can user1 started the experiment: True
can user2 started the experiment: False

🎯 과제

이 프로젝트에서 다음을 배우게 됩니다:

  • 중복된 태그가 lab 객체에 추가되지 않도록 insert_tag 메서드를 구현하는 방법
  • 인증된 사용자 및 멤버 사용자만 실험을 시작할 수 있도록, 사용자가 실험을 시작할 수 있는지 여부를 결정하는 can_be_started 메서드를 구현하는 방법
  • Lab 클래스가 예상대로 작동하는지 확인하기 위해 테스트하는 방법

🏆 성과

이 프로젝트를 완료하면 다음을 수행할 수 있습니다:

  • 백엔드 시스템에서 핵심 클래스를 적절하게 구현하는 것의 중요성을 이해합니다.
  • 클래스에 대한 깨끗하고 유지 관리 가능하며 버그 없는 코드를 작성하는 능력을 보여줍니다.
  • 클래스의 기능을 테스트하고 검증하는 경험을 얻습니다.

Lab 클래스 구현

이 단계에서는 lab.py 파일에서 Lab 클래스를 구현하는 방법을 배우게 됩니다. 이 단계를 완료하려면 아래 단계를 따르세요:

  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. 중복된 태그가 lab 객체에 삽입되지 않도록 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']
can user1 started the experiment: True
can user2 started the experiment: False

이 출력은 Lab 클래스가 예상대로 작동하며 다음과 같은 동작을 나타냄을 확인합니다:

  • Lab 객체는 중복 없이 예상된 태그를 가지고 있습니다.
  • can_be_started 메서드는 인증된 멤버인 user1이 실험을 시작할 수 있지만, 인증되지 않은 비멤버인 user2는 시작할 수 없음을 올바르게 결정합니다.

요약

축하합니다! 이 프로젝트를 완료했습니다. LabEx 에서 더 많은 랩을 연습하여 기술을 향상시킬 수 있습니다.

✨ 솔루션 확인 및 연습✨ 솔루션 확인 및 연습