본문 바로가기

카테고리 없음

Python Class

클래스 상속(Class Inheritance)은 객체 지향 프로그래밍(OOP)에서 중요한 개념 중 하나입니다. 

상속을 이용하면 이미 정의된 클래스의 속성과 메서드를 그대로 물려받아 새로운 클래스를 만들어낼 수 있습니다. 이를 통해 코드의 재사용성을 높이면서도, 유연성과 확장성을 갖춘 코드를 작성할 수 있습니다.

 

예를 들어, 학생 클래스와 대학생 클래스를 생성할 때, 학생 클래스를 상속받으면 대학생 클래스에 공통적으로 쓰이는 메서드와 속성을 그대로 갖출 수 있습니다. 또한, 게시글 클래스를 생성할 때, 공지사항 클래스와 일반 게시글 클래스로 나눠 코드를 작성하면, 각 클래스에 맞게 메서드와 속성을 추가해 효율적으로 코드를 작성할 수 있습니다.

 

아래는 클래스 상속을 이용한 예시 코드입니다.

  1. 동물(Animal) 클래스와 상속받은 개(Dog) 클래스와 고양이(Cat) 클래스
python
class Animal:
    def __init__(self, name, age):
        self.name = name
        self.age = age
    
    def get_name(self):
        return self.name
    
    def get_age(self):
        return self.age

class Dog(Animal):
    def __init__(self, name, age, breed):
        super().__init__(name, age)
        self.breed = breed
    
    def get_breed(self):
        return self.breed

class Cat(Animal):
    pass

dog_1 = Dog('Max', 3, 'Golden Retriever')
print(dog_1.get_name()) # Max
print(dog_1.get_age()) # 3
print(dog_1.get_breed()) # Golden Retriever

cat_1 = Cat('Kitty', 4)
print(cat_1.get_name()) # Kitty
print(cat_1.get_age()) # 4

Animal 클래스는 동물의 이름과 나이를 출력하는 객체를 생성하는데 사용됩니다. Dog 클래스와 Cat 클래스는 Animal 클래스를 상속받아, 각각 강아지와 고양이를 출력하는 객체를 생성하는데 사용됩니다. 이때 Dog 클래스는 새로운 속성(breed)과 메서드(get_breed)를 추가하여, 강아지의 종류도 출력할 수 있게 하였습니다.

  1. 차(Car) 클래스와 상속받은 트럭(Truck) 클래스
python
class Car:
    def __init__(self, brand, model, year):
        self.brand = brand
        self.model = model
        self.year = year
    
    def get_brand(self):
        return self.brand
    
    def get_model(self):
        return self.model
    
    def get_year(self):
        return self.year

class Truck(Car):
    def __init__(self, brand, model, year, capacity):
        super().__init__(brand, model, year)
        self.capacity = capacity
    
    def get_capacity(self):
        return self.capacity

car_1 = Car('BMW', 'M5', 2021)
print(car_1.get_brand()) # BMW
print(car_1.get_model()) # M5
print(car_1.get_year()) # 2021

truck_1 = Truck('Hyundai', 'Xcient', 2022, 5)
print(truck_1.get_brand()) # Hyundai
print(truck_1.get_model()) # Xcient
print(truck_1.get_year()) # 2022
print(truck_1.get_capacity()) # 5

Car 클래스는 차의 브랜드, 모델, 제조년도를 출력하는 객체를 생성하는데 사용됩니다. Truck 클래스는 Car 클래스를 상속받아, 트럭의 브랜드, 모델, 제조년도와 트럭의 적재용량을 출력하는 객체를 생성하는데 사용됩니다.

  1. 사람(Person) 클래스와 상속받은 학생(Student) 클래스
python
class Person:
    def __init__(self, name, age, gender):
        self.name = name
        self.age = age
        self.gender = gender
    
    def get_name(self):
        return self.name
    
    def get_age(self):
        return self.age
    
    def get_gender(self):
        return self.gender

class Student(Person):
    def __init__(self, name, age, gender, major):
        super().__init__(name, age, gender)
        self.major = major
    
    def get_major(self):
        return self.major

person_1 = Person('Alice', 25, 'female')
print(person_1.get_name()) # Alice
print(person_1.get_age()) # 25
print(person_1.get_gender()) # female

student_1 = Student('Bob', 30, 'male', 'Computer Science')
print(student_1.get_name()) # Bob
print(student_1.get_age()) # 30
print(student_1.get_gender()) # male
print(student_1.get_major()) # Computer Science

Person 클래스는 사람의 이름, 나이, 성별을 출력하는 객체를 생성하는데 사용됩니다. Student 클래스는 Person 클래스를 상속받아, 학생의 이름, 나이, 성별과 전공을 출력하는 객체를 생성하는데 사용됩니다. 이때 Student 클래스는 새로운 속성(major)과 메서드(get_major)를 추가하여, 학생의 전공도 출력할 수 있게 하였습니다.