본문 바로가기
Python

철저한 보안의 Car 클래스 완성하기 (캡슐화)

by 헬로제이콥 2025. 12. 29.

[심화 실습] 철저한 보안의 Car 클래스 완성하기

목표: 비공개 속성(__)을 선언하고, Getter와 Setter를 구현하되, 잘못된 데이터(예: 음수 연식)를 걸러내는 조건문까지 직접 작성합니다.

요구사항:

  1. 캡슐화: name, year, color 세 가지 속성을 외부에서 직접 접근할 수 없도록 비공개로 만드세요.
  2. Getter: 전체 정보를 한 번에 반환하는 get_info를 만드세요.
  3. Setter (조건부 수정): * 색상을 변경하는 set_color를 만드세요.
    • 연식을 변경하는 set_year를 만드세요. 단, 자동차 연식은 1900년보다 커야만 수정이 가능하도록 if문을 사용하세요. (잘못된 연식 입력 시 "유효하지 않은 연식입니다" 출력)

[심화 미션] 빈칸을 채워 완성도 높은 코드를 작성하세요!

Python
 
class Car:
    def __init__(self, name, year, color):
        # [빈칸 1] 세 개의 속성을 모두 비공개로 초기화하세요.
        ____________________
        ____________________
        ____________________

    # [빈칸 2] 전체 차량 정보를 문자열로 반환하는 Getter를 만드세요.
    def get_info(self):
        return ________________________________________________

    # [빈칸 3] 색상을 변경하는 Setter를 만드세요.
    def set_color(self, new_color):
        ____________________
        print(f"색상이 {new_color}(으)로 변경되었습니다.")

    # [빈칸 4] 연식을 변경하는 Setter를 만드세요. (조건문 활용!)
    def set_year(self, new_year):
        if new_year > 1900:
            ____________________
            print(f"연식이 {new_year}년으로 업데이트되었습니다.")
        else:
            print("오류: 유효하지 않은 연식입니다!")

# --- 테스트 코드 ---

# 1. 초기 객체 생성
my_car = Car("테슬라", 2023, "레드")

# 2. 정보 출력 (Getter 호출)
print(my_car.________())

# 3. 색상 수정 (Setter 호출)
my_car.________("화이트")

# 4. 잘못된 연식 수정 시도 (Setter의 조건문 작동 확인)
my_car.________(1850) 

# 5. 올바른 연식 수정 시도
my_car.________(2025)

# 6. 최종 결과 확인
print("최종 정보:", my_car.________())

출력 예시 (정답일 경우)

Plaintext
 
이름: 테슬라, 연식: 2023, 색상: 레드
색상이 화이트(으)로 변경되었습니다.
오류: 유효하지 않은 연식입니다!
연식이 2025년으로 업데이트되었습니다.
최종 정보: 이름: 테슬라, 연식: 2025, 색상: 화이트