[파이썬 기초]-08 객체지향 프로그래밍의 기초지식(2)

[파이썬 기초]-07 객체지향 프로그래밍의 기초지식(1)

여기에 이미지 설명 삽입

3. 상속

상속은 Python의 객체 지향 프로그래밍에서 중요한 개념으로, 이를 통해 새 클래스를 만들고 하나 이상의 기존 클래스(부모 또는 기본 클래스라고 함)에서 속성과 메서드를 상속할 수 있습니다. 상속의 개념을 자세히 이해하고 사례를 들어 설명하겠습니다.

3.1 상속의 개념

상속은 클래스(하위 클래스 또는 파생 클래스라고 함)가 다른 클래스(부모 또는 기본 클래스라고 함)에서 속성 및 메서드를 상속할 수 있도록 하는 메커니즘입니다. 하위 클래스는 상위 클래스의 속성을 상속하고 고유한 새 기능을 추가하거나 상속된 메서드를 재정의할 수 있습니다.

3.2 상속 구문

Python에서 상속은 하위 클래스 정의에서 상위 클래스를 지정하여 이루어집니다. 구문은 다음과 같습니다.

class ChildClass(ParentClass):
    # 子类的定义

3.3 상속의 예

예를 들어 상속의 개념을 설명하겠습니다.

class Animal:
    def __init__(self, name):
        self.name = name

    def sound(self):
        print("动物发出声音")

class Dog(Animal):
    def sound(self):
        print("狗在汪汪叫")

class Cat(Animal):
    def sound(self):
        print("猫在喵喵叫")

dog = Dog("旺财")
cat = Cat("咪咪")

dog.sound()  # 输出 "狗在汪汪叫"
cat.sound()  # 输出 "猫在喵喵叫"

위의 경우에는 동물 소리를 출력하는 메서드 Animal가 있는 이라는 부모 클래스를 정의했습니다. 그런 다음 클래스를 상속하는 두 개의 하위 클래스 및 를 sound만들었습니다 . 메서드는 개 짖는 소리와 고양이 짖는 소리를 각각 실현하기 위해 하위 클래스에서 다시 작성되었습니다 .DogCatAnimalsound

Dog및 클래스의 인스턴스를 만들고 메서드 Cat를 호출하면 sound각각 짖는 소리와 야옹거리는 소리를 볼 수 있습니다. 이것이 상속의 역할이며, 하위 클래스는 상위 클래스의 특성을 상속하고 필요에 따라 수정하거나 확장할 수 있습니다.

3.4 다중 상속

단일 상속 외에도 Python은 다중 상속도 지원합니다. 즉, 하위 클래스가 여러 상위 클래스에서 상속할 수 있습니다. 구문은 다음과 같습니다.

class ChildClass(ParentClass1, ParentClass2):
    # 子类的定义

다중 상속을 통해 하위 클래스는 여러 부모 클래스의 특성을 소유하면서 여러 부모 클래스의 속성과 메서드를 상속할 수 있습니다.

상속은 개체 지향 프로그래밍에서 매우 강력하고 유연한 기능으로, 코드 재사용 및 확장을 쉽게 해줍니다. 상속을 통해 다음을 사용할 수 있습니다.

동일한 코드를 반복하지 않고 동작이 다른 관련 클래스를 만듭니다. 이렇게 하면 코드 유지 관리성과 확장성이 향상됩니다.

4. 포장

파이썬의 객체지향 프로그래밍에서 캡슐화는 데이터와 관련 메서드를 하나의 전체로 결합할 수 있도록 하는 중요한 개념이며 구현 세부 사항은 외부에서 숨겨집니다. 캡슐화를 통해 클래스의 내부 속성 및 메서드에 대한 액세스를 제어하여 코드의 보안 및 유지 관리성을 향상시킬 수 있습니다. encapsulation의 개념을 자세히 이해하고 사례를 들어 설명해보자.

4.1 캡슐화의 개념

캡슐화는 정보 숨기기를 달성하고 데이터 일관성을 보호하기 위해 데이터와 메서드를 함께 래핑하는 메커니즘입니다. 클래스에서 액세스 한정자를 사용하여 속성 및 메서드의 액세스 수준을 제어할 수 있습니다. 공통 액세스 한정자는 public, protected 및 private입니다.

  • Public: 클래스 외부에서 속성 및 메서드에 액세스할 수 있습니다.
  • 보호됨: 속성 및 메서드는 클래스 및 하위 클래스 내에서만 액세스할 수 있습니다.
  • 비공개: 속성 및 메서드는 클래스 내부에서만 액세스할 수 있습니다.

4.2 캡슐화의 경우

예를 들어 캡슐화의 개념을 설명하겠습니다.

class Person:
    def __init__(self, name, age):
        self.name = name
        self._age = age  # 保护属性,约定以单下划线开头
        self.__address = "北京"  # 私有属性,约定以双下划线开头

    def display_info(self):
        print(f"姓名:{
      
      self.name}")
        print(f"年龄:{
      
      self._age}")
        print(f"地址:{
      
      self.__address}")

person = Person("Mingfeng", 25)
person.display_info()

위의 경우에는 Person공용 속성 name, 보호 속성 _age, 개인 속성 을 가진 이라는 클래스를 정의했습니다 __address. 클래스의 메서드에서 이러한 속성에 직접 액세스할 수 있습니다.

Person클래스의 인스턴스를 생성 하고 display_info메서드를 호출하면 클래스 외부에서 public name및 protected 속성에 액세스할 수 _age있지만 private 속성에 직접 액세스할 수 없음을 알 수 있습니다 __address. _类名__属性名전용 속성은 형식(예: )을 사용하는 것과 같은 특정 방법으로 액세스할 수 있습니다 _Person__address.

캡슐화를 통해 클래스의 내부 구현 세부 정보를 숨기고 외부에서 속성에 직접 액세스 및 수정하는 것을 방지하고 코드의 보안 및 유지 관리성을 향상시킬 수 있습니다. 캡슐화는 또한 더 나은 코드 구성 및 구조를 제공하여 코드를 더 읽기 쉽고 이해하기 쉽게 만듭니다.

캡슐화는 액세스를 제한하기 위한 것이 아니라 코드를 보다 강력하고 확장 가능하게 만드는 좋은 프로그래밍 방법을 제공하기 위한 것입니다. 필요에 따라 적절한 방문을 선택해야 합니다.

수정자를 요청하고 특정 규칙을 따라 객체 지향 코드를 작성하십시오.

5. 다형성

Python의 객체 지향 프로그래밍에서 다형성은 서로 다른 객체가 동일한 메서드에 다르게 응답할 수 있도록 하는 중요한 개념입니다. 다형성은 코드의 유연성과 확장성을 향상시켜 다양한 객체를 처리하는 공통 코드를 작성할 수 있습니다. 다형성(Polymorphism)의 개념을 자세히 이해하고 사례를 들어 설명해보자.

5.1 다형성의 개념

다형성은 객체의 여러 형태를 나타냅니다. 객체 지향 프로그래밍에서 다형성은 동일한 동작이 서로 다른 객체에 의해 수행될 수 있음을 의미합니다. 즉, 서로 다른 객체가 동일한 메서드에 대해 다르게 응답할 수 있습니다. 다형성을 통해 보다 일반적인 코드를 작성하고 코드 재사용성과 확장성을 개선할 수 있습니다.

5.2 다형성 구현

다형성은 메서드 재정의 및 메서드 오버로딩을 통해 달성할 수 있습니다. 메서드 재작성이란 다른 동작을 달성하기 위해 하위 클래스의 상위 클래스에 있는 기존 메서드를 재정의하는 것을 말합니다. 메소드 오버로딩은 동일한 클래스에서 여러 메소드를 정의하는 것을 말하며 이름은 같지만 매개변수 유형이나 매개변수 수가 다르므로 다른 동작을 달성합니다.

5.3 다형성의 경우

예를 들어 다형성의 개념을 설명하겠습니다.

class Animal:
    def sound(self):
        pass

class Dog(Animal):
    def sound(self):
        print("汪汪汪!")

class Cat(Animal):
    def sound(self):
        print("喵喵喵!")

def make_sound(animal):
    animal.sound()

dog = Dog()
cat = Cat()

make_sound(dog)  # 输出 "汪汪汪!"
make_sound(cat)  # 输出 "喵喵喵!"

위의 경우에서 라는 메서드를 Animal가진 이라는 부모 클래스를 정의했습니다 sound. 그런 다음 서로 다른 소리를 내기 위해 각각 메서드를 재정의하는 두 개의 하위 클래스 Dog및 를 만들었습니다 .Catsound

유형의 매개 변수를 취하고 make_sound해당 메서드를 호출하는 이라는 함수를 정의하여 함수에 다른 동물 개체를 전달하여 다형성을 달성할 수 있습니다 . 객체든 객체 든 모두 메서드에 응답하고 고유한 소리를 냅니다.AnimalsoundDogCatsound

다형성을 통해 서로 다른 개체에서 동일한 작업을 수행하는 일반 코드를 작성할 수 있습니다. 이러한 방식으로 다양한 유형의 객체를 보다 유연하게 처리하고 코드 재사용성과 확장성을 향상시킬 수 있습니다.

요약:

다형성(Polymorphism)은 객체 지향 프로그래밍에서 중요한 개념으로, 서로 다른 객체가 동일한 메서드에 다르게 응답할 수 있도록 합니다. 메서드 재정의 및 메서드 오버로딩을 통해 다형성을 달성할 수 있습니다. 다형성은 보다 유연하고 확장 가능한 코드 작성 방법을 제공하여 코드 재사용성과 유지 관리성을 향상시킵니다.

결론적으로

이 소개를 통해 이제 Python의 객체 지향 프로그래밍에 대한 기본적인 이해가 있어야 합니다. 객체 지향 프로그래밍은 코드 가독성과 유지 관리성을 향상시킬 수 있는 강력한 프로그래밍 패러다임이며 캡슐화, 상속 및 다형성과 같은 기능을 제공합니다. 이 기사가 Python에서 객체 지향 프로그래밍을 배우는 데 도움이 되기를 바라며 프로그래밍 여정에서 진전을 이루기를 바랍니다.

추천

출처blog.csdn.net/mingfeng4923/article/details/130909535