본문 바로가기
  • 문과생의 백엔드 개발자 성장기
|Playdata_study/Python

210429_클래스4

by 케리's 2021. 4. 30.

* 다중 상속에 대한 개념 이해 및 선언
* 다형성의 개념 이해 및 선언

 

다중 상속 

하나 이상의 선조를 가질 수 있는 후손의 구조
두 개 이상의 선조가 같은 메서드를 가지고 있을 때 먼저 정의된 쪽이 호출된다.

ex) class
   기본 기능(볶자)교집합을 뽑아내서 조상 클래스를 만드는 느낌
   짜장면(당근, 양파, 파를 볶자), 춘장을 넣고 면을..
   볶음밥(당근, 양파, 파를 볶자), 밥을 더 해서 볶자 (메서드)
   짬뽕(당근, 양파, 파를 볶자), 해산물 더해서 끓여보자

 

두개 이상의 선조가 같은 메소드를 가지고 있을때 먼저 정의된 쪽이 호출된다 .

 

1. 모든 클래스의 선조는 object 클래스이다.

2. 클래스를 선언하게 되면 내장으로 사용되는 메서드는 object 클래스로부터 받은 메서드이다.

3. __class__ ▶ type( )

    >>> a=40
    >>> type(40)  ▷ int  class가 가진 __class__가 자동으로 호출되어 리턴하는 값 
          <class 'int'>
    >>> a.__class__
          <class 'int'>
    >>> b=97.7
    >>> type(b)
          <class 'float'>
    >>> b.__class__
          <class 'float'>

 

4. 연산자 오버 로딩 = exam02.py 

5. 객체.__dir__ = >> dir()

 

ex) exam02.py

 

 

다형성

어떤 한 요소에 여러 개념을 넣어 놓은 것으로 일반적인 클래스 상속 구조에서

재정의 (같은 이름의 메서드가 여러 클래스에서 다른 기능을 하는 것)하는 것을 의미한다.

 

특징


     AA ← BB,  AA CC

  1. 여러 개의 클래스가 같은 이름의 메서드에 대하여 각자 다른 방법으로 작동할 수 있도록 설계
  2. 하나의 데이터 유형(선조 객체) 변수로 여러 유형의 객체 참조(후손의 객체)가 가능하다.
      a1 = AA
  3. 변수가 참조하는 객체의 유형에 맞는 메서드를 자동으로 호출할 수 있다.
  4. 추상화를 이용하여 다양한 구현을 제공할 수 있다.

필요조건


  1. 상속관계의 클래스이면서 후손 클래스 객체에서 작동된다.
  2. 후손클래스 객체의 메서드 호출은 선조 클래스 유형의 변수를 통해 호출되며 재정의된 메서드 이어야 한다.

 

추상화 (abstract)


Subclassing :

 상속의 유형 중에서 선조 클래스의 속성과 구조를 그대로 가지면서 새로운 데이터 멤버 변수와 멤버 메서드를 추가해

 재 사용하는 방법

 

Subtyping :

 선조 클래스가 수행할 명령을 선언하고 후손 클래스가 상속받아 선조 클래스의 객체를 후손 클래스의 타입으로 대처해   서 실행할 수 있게 해주는 방법

 

 

※ 파이썬의 서브 타이핑은 추상 클래스를 지원하면서 duck typing을 지원한다.


duck typing 은 동적 바인딩의 한 종류로 duck클래스 객체를 선언하면 duck 가 생성되어 호출된다는 말로

객체의 변수 및 메서드의 집합이 객체의 타입을 결정하는 것을 말한다.

서브 타이핑 시에 선조의 주소로 후손의 객체를 가지는 것이 아니라 추상 클래스를 선언하고 재정의를 하면서

손의 객체 주소를 각각 생성해서 메서드를 실행하게 된다.

 

 

 

추상 메서드 

후손을 위해 선조가 강제로 재정의 할 수 있게 선언된 메소드

추상 메서드를 포함한 클래스는 추상 클래스가 된다.

 

문법

 1. 추상 클래스는 객체 생성이 불가능하다.

 2. 추상 클래스를 상속받는 후손 클래스가 선조의 추상 메서드를 재정하지 않으면 추상 클래스가 된다. 

 

 

* 파이썬에서 선언하는 추상 클래스

   ABCMeta: Abstract Base Classes, Meta Class
abc.py
@abstractmethod
@property
@staticmethod
@classmethod

 

 

@abstractmethod

 

 

@property

'|Playdata_study > Python' 카테고리의 다른 글

210504_객체 단위 파일 입/출력  (0) 2021.05.05
210503_OS모듈  (0) 2021.05.03
210428_클래스3  (0) 2021.04.28
210427_클래스 2  (0) 2021.04.27
210426_클래스1  (0) 2021.04.26

댓글