과제

🧑‍💻 PYTHON - 변수 (문제풀이 7일차)

Chansman 2025. 3. 17. 15:33

🧑‍💻 Python 클래스 실습: Person 클래스 정의 및 사용


문제 설명

  • 목표: Person 클래스를 정의하고, name과 age 속성을 설정합니다.
  • 기능: greet라는 메서드를 통해 인사 메시지를 반환하도록 구현합니다.
  • 테스트: '홍길동'이라는 이름과 20살의 나이를 가진 객체를 생성하고, greet 메서드를 호출하여 인사 메시지를 출력하세요.

문제 해결 코드

# 1. 클래스 정의
class Person:
    # 2. 생성자 메서드 (__init__)로 name과 age 초기화
    def __init__(self, name, age):
        self.name = name  # 이름 속성
        self.age = age    # 나이 속성

    # 3. greet 메서드 정의 - 인사 메시지 반환
    def greet(self):
        return f"안녕하세요, 제 이름은 {self.name}입니다. 나이는 {self.age}살입니다."

# 4. '홍길동' 객체 생성
person = Person("홍길동", 20)

# 5. greet 메서드 호출 및 출력
print(person.greet())

📋 출력 예시

안녕하세요, 제 이름은 홍길동입니다. 나이는 20살입니다.

🔍 코드 프로세스 흐름

✅ 1. 클래스 정의

  • class Person으로 Person 클래스를 정의합니다.
  • 클래스란 객체를 생성하기 위한 틀입니다.

✅ 2. 생성자 메서드 __init__

  • 객체 생성 시 자동으로 호출되어 속성을 초기화합니다.
  • self.name = name: 객체의 name 속성에 입력받은 값을 저장합니다.
  • self.age = age: 객체의 age 속성에 입력받은 값을 저장합니다.

✅ 3. greet 메서드 정의

  • self를 통해 객체의 속성에 접근합니다.
  • return을 사용하여 인사 메시지를 반환하도록 합니다.
  • 메시지에 self.name과 self.age를 포맷팅하여 출력합니다.

✅ 4. 객체 생성

  • person = Person("홍길동", 20)
    • Person 클래스를 통해 객체를 생성합니다.
    • 홍길동은 name에, 20은 age에 전달됩니다.

✅ 5. 메서드 호출 및 출력

  • print(person.greet()): greet() 메서드를 호출하여 반환된 문자열을 출력합니다.

🧩 왜 return을 사용할까?

  • return을 사용하면 메서드가 값을 반환하게 됩니다.
  • 반환된 값을 출력하거나, 다른 곳에 재활용할 수 있습니다.
  • print()를 메서드 안에 사용하면, 단순히 그 시점에서만 출력되고, 결과를 재활용하기 어렵습니다.

즉, return은 코드의 재활용성을 높여줍니다. 🚀


⚠️ 주의사항

  1. __init__은 **int가 아니라 init**으로 작성해야 합니다.
  2. 속성 지정 시, **self.**를 꼭 사용해야 합니다.
  3. 메서드 정의 시, **def greet(self):**처럼 작성하세요.
  4. 메서드 호출은 반드시 인스턴스 객체로 진행해야 합니다 (person.greet()).

결론

  • Python에서 클래스를 정의하고 객체를 생성하는 기본적인 방법을 익혔습니다.
  • __init__ 메서드로 객체의 속성을 초기화하고, greet 메서드로 동작을 정의했습니다.
  • **return**을 사용해 메서드가 값을 반환하도록 하여 재활용성을 높였습니다.

이와 같은 방식으로 클래스를 정의하면 다양한 객체 지향 프로그래밍 문제를 해결할 수 있습니다! 🚀

클래스와 객체 지향 프로그래밍은 Python을 더 효율적으로 활용하는 방법입니다. 앞으로도 다양한 클래스를 만들어보세요!


📐 Python 클래스 실습: Rectangle 클래스 정의 및 사용


문제 설명

  • 목표: Rectangle 클래스를 정의하고, height(높이)와 width(너비)를 속성으로 설정합니다.
  • 기능: area라는 메서드를 통해 사각형의 면적을 반환하도록 구현합니다.
  • 테스트: 높이가 10, 너비가 5인 객체를 생성하여, area 메서드를 호출해 면적을 출력하세요.

문제 해결 코드

# 1. 클래스 정의
class Rectangle:
    # 2. 생성자 메서드 (__init__)로 height와 width 초기화
    def __init__(self, height, width):
        self.height = height  # 인스턴스 변수: 높이
        self.width = width    # 인스턴스 변수: 너비

    # 3. area 메서드 정의 - 면적 계산 후 반환
    def area(self):
        return self.height * self.width  # 면적 = 높이 * 너비

# 4. Rectangle 객체 생성
rectangle = Rectangle(10, 5)

# 5. area 메서드를 호출하여 면적 출력
print(rectangle.area())

📋 출력 예시

50

🔍 코드 프로세스 흐름

✅ 1. 클래스 정의

  • class Rectangle으로 Rectangle 클래스를 정의합니다.
  • 클래스란 객체를 생성하기 위한 틀이며, 사각형의 특성을 갖게 됩니다.

✅ 2. 생성자 메서드 __init__

  • 객체가 생성될 때 자동으로 호출되어, 속성을 초기화합니다.
  • self.height = height: 입력받은 height 값을 인스턴스 변수로 설정합니다.
  • self.width = width: 입력받은 width 값을 인스턴스 변수로 설정합니다.

✅ 3. area 메서드 정의

  • self.height * self.width로 면적을 계산하여 반환합니다.
  • self는 현재 인스턴스를 참조하며, 이를 통해 인스턴스 변수에 접근합니다.

✅ 4. 객체 생성

  • rectangle = Rectangle(10, 5)로 객체를 생성합니다.
  • height는 10, width는 5로 설정됩니다.

✅ 5. 메서드 호출 및 출력

  • print(rectangle.area()): area() 메서드를 호출하여 면적을 출력합니다.

🧩 self가 중요한 이유

  • self는 인스턴스 자신을 참조합니다.
  • 인스턴스 변수는 반드시 self.변수명으로 선언하고 접근해야 합니다.
  • self 없이 변수를 정의하면 지역 변수로 처리되어, 클래스의 다른 메서드에서 인식되지 않습니다.

⚠️ 주의사항

  1. __init__은 **int가 아니라 init**으로 작성해야 합니다.
  2. 속성 지정 시, 반드시 **self**를 사용하세요.
  3. 메서드 정의 시 **def area(self):**로 작성해야 합니다.
  4. 메서드 호출은 반드시 **객체명.메서드명()**으로 진행해야 합니다.

결론

  • Python에서 클래스를 정의하고 객체를 생성하는 기본적인 방법을 학습했습니다.
  • __init__ 메서드를 사용해 객체의 속성을 초기화하고, area 메서드를 사용해 사각형의 면적을 계산했습니다.
  • self를 사용하여 객체 지향 프로그래밍의 핵심 개념을 익혔습니다.

클래스와 객체 개념은 Python 프로그래밍에서 매우 중요한 개념입니다! 🚀

앞으로도 이러한 방식으로 다양한 클래스를 직접 만들어 보며 연습해보세요! 😊

 

 

📚 Python 클래스 실습: Book 클래스 정의 및 사용


문제 설명

  • 목표: Book 클래스를 정의하고, title(제목)과 author(저자)를 속성으로 설정합니다.
  • 기능:
    • __str__ 특수 메서드를 오버라이드하여, 객체가 문자열로 변환될 때 "제목: [title], 저자: [author]" 형식으로 출력되도록 합니다.
  • 테스트: Book 객체를 하나 생성하고, print() 함수를 사용하여 해당 객체의 문자열 표현을 출력합니다.

문제 해결 코드

# 1. 클래스 정의
class Book:
    # 2. 생성자 메서드 (__init__)로 title과 author 초기화
    def __init__(self, title, author):
        self.title = title    # 인스턴스 변수: 제목
        self.author = author  # 인스턴스 변수: 저자

    # 3. __str__ 메서드 오버라이드 - 객체를 문자열로 표현
    def __str__(self):
        return f"제목: {self.title}, 저자: {self.author}"

# 4. Book 객체 생성
book = Book("파이썬의 정석", "홍길동")

# 5. print() 함수로 객체의 문자열 표현 출력
print(book)

📋 출력 예시

제목: 파이썬의 정석, 저자: 홍길동

🔍 코드 프로세스 흐름

✅ 1. 클래스 정의

  • class Book으로 Book 클래스를 정의합니다.

✅ 2. 생성자 메서드 __init__

  • 객체가 생성될 때 자동으로 호출되어 속성을 초기화합니다.
  • self.title = title: 입력받은 제목 값을 인스턴스 변수로 설정합니다.
  • self.author = author: 입력받은 저자 값을 인스턴스 변수로 설정합니다.

✅ 3. __str__ 메서드 오버라이드

  • 객체가 문자열로 출력될 때 호출되는 특수 메서드입니다.
  • f"제목: {self.title}, 저자: {self.author}" 형식으로 출력되도록 작성합니다.

✅ 4. 객체 생성

  • book = Book("파이썬의 정석", "홍길동")로 객체를 생성합니다.
  • title은 "파이썬의 정석", author는 "홍길동"으로 설정됩니다.

✅ 5. 문자열 출력

  • print(book)을 통해 __str__ 메서드가 자동으로 호출되어 문자열 형태로 출력됩니다.

🧩 __str__ 메서드의 중요성

  • Python에서 객체를 print()로 출력하면 기본적으로 객체의 메모리 주소가 출력됩니다.
  • __str__ 메서드를 오버라이드하면, 객체를 의미 있는 문자열로 표현할 수 있어 가독성이 향상됩니다.
  • __str__ vs __repr__ 차이
    • __str__: 사용자가 보기 쉬운 형태로 객체를 표현합니다.
    • __repr__: 개발자가 객체를 재구성할 수 있도록 표현합니다.

⚠️ 주의사항

  1. **__str__는 반드시 return**을 사용하여 문자열을 반환해야 합니다.
  2. 문자열 포맷팅은 f-string을 사용하면 가독성이 좋아집니다.
  3. 객체 생성 시 매개변수 순서를 정확히 지켜야 합니다.

결론

  • Python에서 객체의 문자열 표현을 제어하는 방법을 익혔습니다.
  • __str__ 메서드 오버라이드를 통해 객체 출력 시 의미 있는 정보를 제공할 수 있게 되었습니다.
  • 이러한 방식은 객체 지향 프로그래밍에서 필수적인 개념이므로, 반드시 숙지해두세요!

클래스를 이해하고 객체의 표현 방식을 제어하는 능력은 Python 개발자로서 중요한 스킬입니다! 🚀

 

 

💼 Python 클래스 실습: Employee 클래스 정의 및 사용


문제 설명

  • 목표: Employee 클래스를 정의하고, 각 직원의 이름(name)과 급여(salary)를 속성으로 설정합니다.
  • 기능:
    • 클래스 변수 raise_amount를 설정하고, 기본값은 1.04로 지정합니다.
    • apply_raise 메서드를 통해 급여에 raise_amount를 적용해 인상된 급여를 반영합니다.
  • 테스트:
    • Employee 객체 2개를 생성합니다.
    • 한 객체의 raise_amount만 변경해 급여 인상률을 다르게 적용합니다.
    • 두 객체의 인상된 급여를 출력합니다.

문제 해결 코드

# 1. 클래스 정의
class Employee:
    # 클래스 변수 (모든 인스턴스가 공유하는 변수)
    raise_amount = 1.04  # 기본 월급 인상률

    # 생성자 메서드 (__init__)
    def __init__(self, name, salary):
        self.name = name      # 인스턴스 변수: 이름
        self.salary = salary  # 인스턴스 변수: 급여

    # 급여 인상 메서드
    def apply_raise(self):
        self.salary = int(self.salary * self.raise_amount)  # 인상된 급여 반영

# 2. Employee 객체 생성
emp1 = Employee("홍길동", 50000)
emp2 = Employee("김철수", 60000)

# 3. emp2의 인상률만 변경
emp2.raise_amount = 1.10

# 4. 급여 인상 적용
emp1.apply_raise()
emp2.apply_raise()

# 5. 결과 출력
print(f"{emp1.name}의 인상된 급여: {emp1.salary}")
print(f"{emp2.name}의 인상된 급여: {emp2.salary}")

📋 출력 예시

홍길동의 인상된 급여: 52000
김철수의 인상된 급여: 66000

🔍 코드 프로세스 흐름

✅ 1. 클래스 정의

  • class Employee로 Employee 클래스를 정의합니다.
  • **클래스 변수 raise_amount**를 통해 기본 인상률을 1.04로 설정합니다.

✅ 2. 생성자 메서드 __init__

  • self.name과 self.salary를 인스턴스 변수로 초기화합니다.

✅ 3. 급여 인상 메서드 apply_raise

  • self.salary * self.raise_amount를 통해 인상된 급여를 계산하고 반영합니다.
  • int()를 사용해 소수점을 제거하여 정수로 처리합니다.

✅ 4. 객체 생성 및 인상률 변경

  • emp1은 기본 인상률 1.04를 사용합니다.
  • emp2.raise_amount = 1.10을 통해 특정 객체의 인상률만 개별적으로 변경합니다.

✅ 5. 급여 인상 적용 및 출력

  • 각 객체의 apply_raise() 메서드를 호출하여 급여를 인상합니다.
  • 최종 인상된 급여를 print()로 출력합니다.

🧩 클래스 변수 vs 인스턴스 변수

  • 클래스 변수: raise_amount는 클래스에 공유되는 변수로, 모든 인스턴스가 동일하게 참조합니다.
  • 인스턴스 변수: name, salary는 각 인스턴스마다 고유하게 존재하는 변수입니다.
  • 특정 인스턴스에서 클래스 변수를 변경하면 그 인스턴스에서만 개별적으로 적용됩니다.

⚠️ 주의사항

  1. 클래스 변수 변경 시, self.raise_amount로 설정해야만 해당 인스턴스에만 적용됩니다.
  2. 모든 인스턴스에 동일하게 적용하려면 Employee.raise_amount = 값으로 변경해야 합니다.
  3. 급여 계산 후 int()로 소수점을 제거해 깔끔하게 처리했습니다.

결론

  • Python에서 클래스 변수와 인스턴스 변수의 차이를 정확히 이해할 수 있는 실습이었습니다.
  • apply_raise 메서드를 통해 개별적으로 급여 인상률을 적용하는 방법을 익혔습니다.
  • 객체 지향 프로그래밍에서 클래스 변수와 인스턴스 변수의 개념을 명확하게 이해하는 것이 중요합니다!

앞으로도 다양한 객체를 다루며 클래스를 더 깊게 이해해보세요! 🚀

 

💼 Python 클래스 실습: Employee 클래스 정의 및 사용


문제 설명

  • 목표: Employee 클래스를 정의하고, 각 직원의 이름(name)과 급여(salary)를 속성으로 설정합니다.
  • 기능:
    • 클래스 변수 raise_amount를 설정하고, 기본값은 1.04로 지정합니다.
    • apply_raise 메서드를 통해 급여에 raise_amount를 적용해 인상된 급여를 반영합니다.
  • 테스트:
    • Employee 객체 2개를 생성합니다.
    • 한 객체의 raise_amount만 변경해 급여 인상률을 다르게 적용합니다.
    • 두 객체의 인상된 급여를 출력합니다.

문제 해결 코드

# 1. 클래스 정의
class Employee:
    # 클래스 변수 (모든 인스턴스가 공유하는 변수)
    raise_amount = 1.04  # 기본 월급 인상률

    # 생성자 메서드 (__init__)
    def __init__(self, name, salary):
        self.name = name      # 인스턴스 변수: 이름
        self.salary = salary  # 인스턴스 변수: 급여

    # 급여 인상 메서드
    def apply_raise(self):
        self.salary = int(self.salary * self.raise_amount)  # 인상된 급여 반영

# 2. Employee 객체 생성
emp1 = Employee("홍길동", 50000)
emp2 = Employee("김철수", 60000)

# 3. emp2의 인상률만 변경
emp2.raise_amount = 1.10

# 4. 급여 인상 적용
emp1.apply_raise()
emp2.apply_raise()

# 5. 결과 출력
print(f"{emp1.name}의 인상된 급여: {emp1.salary}")
print(f"{emp2.name}의 인상된 급여: {emp2.salary}")

📋 출력 예시

홍길동의 인상된 급여: 52000
김철수의 인상된 급여: 66000

🔍 코드 프로세스 흐름

✅ 1. 클래스 정의

  • class Employee로 Employee 클래스를 정의합니다.
  • **클래스 변수 raise_amount**를 통해 기본 인상률을 1.04로 설정합니다.

✅ 2. 생성자 메서드 __init__

  • self.name과 self.salary를 인스턴스 변수로 초기화합니다.

✅ 3. 급여 인상 메서드 apply_raise

  • self.salary * self.raise_amount를 통해 인상된 급여를 계산하고 반영합니다.
  • int()를 사용해 소수점을 제거하여 정수로 처리합니다.

✅ 4. 객체 생성 및 인상률 변경

  • emp1은 기본 인상률 1.04를 사용합니다.
  • emp2.raise_amount = 1.10을 통해 특정 객체의 인상률만 개별적으로 변경합니다.

✅ 5. 급여 인상 적용 및 출력

  • 각 객체의 apply_raise() 메서드를 호출하여 급여를 인상합니다.
  • 최종 인상된 급여를 print()로 출력합니다.

🧩 클래스 변수 vs 인스턴스 변수

  • 클래스 변수: raise_amount는 클래스에 공유되는 변수로, 모든 인스턴스가 동일하게 참조합니다.
  • 인스턴스 변수: name, salary는 각 인스턴스마다 고유하게 존재하는 변수입니다.
  • 특정 인스턴스에서 클래스 변수를 변경하면 그 인스턴스에서만 개별적으로 적용됩니다.

⚠️ 주의사항

  1. 클래스 변수 변경 시, self.raise_amount로 설정해야만 해당 인스턴스에만 적용됩니다.
  2. 모든 인스턴스에 동일하게 적용하려면 Employee.raise_amount = 값으로 변경해야 합니다.
  3. 급여 계산 후 int()로 소수점을 제거해 깔끔하게 처리했습니다.

결론

  • Python에서 클래스 변수와 인스턴스 변수의 차이를 정확히 이해할 수 있는 실습이었습니다.
  • apply_raise 메서드를 통해 개별적으로 급여 인상률을 적용하는 방법을 익혔습니다.
  • 객체 지향 프로그래밍에서 클래스 변수와 인스턴스 변수의 개념을 명확하게 이해하는 것이 중요합니다!

앞으로도 다양한 객체를 다루며 클래스를 더 깊게 이해해보세요! 🚀

📚 Python 클래스 실습: Account 클래스 정의 및 사용하기

✅ 문제 설명

Account 클래스를 작성하세요.

  • Account 클래스는 **소유자(owner)**와 **잔액(balance)**을 속성으로 가지며, **잔액은 프라이빗 변수(__balance)**로 선언합니다.
  • deposit와 withdraw 메소드를 통해 입금과 출금을 할 수 있습니다.
  • 출금 시, 잔액이 부족할 경우 출금이 되지 않도록 처리합니다.
  • Account 객체를 생성하고, 입금과 출금 작업을 시뮬레이션한 후 최종 잔액을 출력하세요.

🔄 코드 프로세스 흐름

  1. 클래스 정의
    • __init__ 생성자를 사용하여 소유자프라이빗 잔액을 초기화합니다.
    • deposit() 메서드로 입금을 처리합니다.
    • withdraw() 메서드로 출금을 처리하며, 잔액이 부족한 경우 실패 메시지를 출력합니다.
    • get_balance() 메서드로 현재 잔액을 반환합니다.
  2. 객체 생성 및 메서드 호출
    • 홍길동이라는 소유자와 초기 잔액 10,000원으로 Account 객체를 생성합니다.
    • deposit 메서드를 이용해 5,000원을 입금합니다.
    • withdraw 메서드를 이용해 3,000원을 출금합니다.
    • withdraw 메서드로 15,000원을 출금 시도 (잔액 부족으로 실패 예상).
    • get_balance로 최종 잔액을 출력합니다.

🧑‍💻 코드 예시

# 1. Account 클래스 정의
class Account:
    def __init__(self, owner, balance):
        self.owner = owner           # 인스턴스 변수: 소유자
        self.__balance = balance     # 프라이빗 변수: 잔액

    # 입금 메서드
    def deposit(self, amount):
        if amount > 0:
            self.__balance += amount
            print(f"💰 {amount}원이 입금되었습니다. 현재 잔액: {self.__balance}원")
        else:
            print("⚠️ 입금 금액은 0보다 커야 합니다.")

    # 출금 메서드
    def withdraw(self, amount):
        if amount <= self.__balance:
            self.__balance -= amount
            print(f"💸 {amount}원이 출금되었습니다. 현재 잔액: {self.__balance}원")
        else:
            print("🚫 출금 실패: 잔액이 부족합니다.")

    # 잔액 조회 메서드
    def get_balance(self):
        return self.__balance

# 2. Account 객체 생성
account = Account("홍길동", 10000)

# 3. 입금 및 출금 작업
account.deposit(5000)    # 5,000원 입금
account.withdraw(3000)   # 3,000원 출금
account.withdraw(15000)  # 15,000원 출금 시도 (실패)

# 4. 최종 잔액 출력
print(f"✅ 최종 잔액: {account.get_balance()}원")

✅ 출력 결과

💰 5000원이 입금되었습니다. 현재 잔액: 15000원
💸 3000원이 출금되었습니다. 현재 잔액: 12000원
🚫 출금 실패: 잔액이 부족합니다.
✅ 최종 잔액: 12000원

🔍 풀이 과정 쉽게 정리

  1. 프라이빗 변수 선언
    • self.__balance를 사용해 외부에서 잔액을 직접 변경하지 못하도록 처리했습니다. 🔒
  2. 입금 처리 (deposit 메서드)
    • 0보다 큰 금액만 입금 가능하도록 조건문을 추가해, 잘못된 입력을 방지했습니다.
  3. 출금 처리 (withdraw 메서드)
    • 출금 금액이 잔액보다 많을 경우 출금이 되지 않고, 실패 메시지를 출력하도록 했습니다.
  4. 잔액 조회 (get_balance 메서드)
    • 현재 잔액을 안전하게 확인할 수 있도록 get_balance() 메서드를 사용했습니다.
  5. 메서드 호출 시뮬레이션
    • 입금과 출금 작업을 실행해 정상 작동 여부를 확인했습니다.
    • 잔액보다 많은 금액 출금 시, 실패 메시지가 출력되어 예외 처리가 정상적으로 작동하는 것을 확인했습니다.

🚀 실전 활용 팁

  • **프라이빗 변수(__balance)**를 사용하여 외부에서 직접 잔액을 변경하지 못하도록 안전성을 강화했습니다.
  • 유효성 검사를 통해 잘못된 입력을 차단하고, 프로그램의 안정성을 높였습니다.
  • 에러 메시지를 통해 사용자가 어떤 부분에서 잘못되었는지 쉽게 파악할 수 있도록 작성했습니다.

🎯 결론

  • 캡슐화와 유효성 검사를 통해 프로그램의 안정성과 보안성을 확보했습니다.
  • 실무에서도 입금/출금 시스템이나 포인트 관리 시스템에 유용하게 사용할 수 있는 패턴입니다.
  • 이러한 예외 처리를 통해 안정적인 코드 작성을 할 수 있습니다! 🚀

이 포맷으로 앞으로도 문제를 꼼꼼하게 정리해드리겠습니다! 💯

 

🚗 Vehicle 클래스와 상속 이해하기

이본 포스팅에서는 Python에서 클래스 상속을 활용해 Vehicle 기본 클래스를 만들고, 이를 기본으로 Truck과 Car 하위 클래스를 구현해보게요. 상속을 통해 코드 재사용성과 확장성을 높이는 방법을 함께 알아보세요! 🚀


✅ 문제 요구사항

  1. Vehicle 기본 클래스
    • 속성: make (제조사), model (모델명)
    • 메소드: display_info() → "이 차량은 [make]에서 제조한 [model]입니다." 반환
  2. Truck 하위 클래스
    • 상속: Vehicle
    • 추가 속성: payload (적재량)
  3. Car 하위 클래스
    • 상속: Vehicle
    • 추가 속성: seats (좌석 수)
  4. 각 객체를 생성하고 display_info() 메소드로 정보를 출력.
  5. 각 객체의 추가 속성(payload, seats)도 출력.

⚙️ 코드 구현 및 설명

# ✅ Vehicle 기본 클래스 선언
class Vehicle:
    def __init__(self, make, model):
        self.make = make  # 제조사
        self.model = model  # 모델명

    def display_info(self):
        return f"이 차량은 {self.make}에서 제조한 {self.model}입니다."

# ✅ Truck 하위 클래스 선언
class Truck(Vehicle):
    def __init__(self, make, model, payload):
        super().__init__(make, model)  # 부모 클래스 속성 초기화
        self.payload = payload  # 적재량

# ✅ Car 하위 클래스 선언
class Car(Vehicle):
    def __init__(self, make, model, seats):
        super().__init__(make, model)  # 부모 클래스 속성 초기화
        self.seats = seats  # 좌석 수

# 🚚 Truck 객체 생성
truck = Truck("현대", "에그시언트", 10000)

# 🚗 Car 객체 생성
car = Car("기아", "K5", 5)

# ✅ Truck 정보 출력
print(truck.display_info())
print(f"적재량: {truck.payload}kg")

# ✅ Car 정보 출력
print(car.display_info())
print(f"좌석 수: {car.seats}석")

📊 실행 결과

이 차량은 현대에서 제조한 에그시언트입니다.
적재량: 10000kg
이 차량은 기아에서 제조한 K5입니다.
좌석 수: 5석

✅ 프로세스 확률 정리

  1. Vehicle 클래스 정의
    • make과 model을 생성자에서 초기화하고, 정보를 출력하는 display_info() 메소드를 정의합니다.
  2. Truck과 Car 하위 클래스 정의
    • super()를 통해 부모 클래스 속성을 확인하고 초기화합니다.
    • 각 클래스에서 고유 속성을 추가합니다.
  3. 객체 생성
    • Truck과 Car 객체를 각각 생성하고 속성 값을 전달합니다.
  4. 정보 출력
    • display_info()로 제조사와 몇명을 출력합니다.
    • 각 클래스 고유의 속성(payload, seats)도 함껔 출력합니다.

🔥 해당 평가 필요 함

  • super().__init__()을 통해 부모 클래스의 속성을 확인하고 함수를 호출
  • 하위 클래스은 자신