TigerCow.Door

'오버라이딩'에 해당되는 글 1건


안녕하세요. 문범우입니다.

이번 포스팅에서는 파이썬에서 클래스의 상속(Inheritance)에 대해서 알아보도록 하겠습니다.


1. 상속(Inheritance)


상속(Inheritance)이란, 다들 아시다시피 '물려받다'라는 의미를 가지고 있습니다.

클래스의 상속은 이러한 의미가 적용됩니다.

즉, B라는 클래스를 만들때 이미 만들어져 있던 A라는 클래스의 기능을 물려받는 것 입니다.

보다 쉽게 이해하기 위해 아래와 같은 Univ 클래스를 구성하였습니다.



Univ class에서는 기본적으로 University를 '서울시립대학교'로 지정하고, __init__함수에서 학년을 설정하게됩니다.

그리고 hello()함수를 통해 자신의 학교, 학년, 이름을 말하게 됩니다.


이제 상속을 사용해보도록 합니다.

ECE라는 클래스를 만드는데 Univ에게 상속을 받으며 University를 '서울시립대학교 전자전기컴퓨터공학부'로 바꾸겠습니다.



위의 코드와 같이 ECE 클래스를 구성하여 해당 파일을 실행시키면 아래와 같은 결과가 나옵니다.



ECE 클래스에서는 hello() 함수를 따로 선언하지 않았지만, Univ 클래스에게 상속받음으로써 이를 사용할 수 있는 것입니다.


위와 같이 상속은 아래와 같은 구조를 가지게 됩니다.


class 상속받을 클래스명(상속할 클래스명):

<내용 1>

<내용 2>

...



2. 매서드 오버라이딩(Method overriding)


상속에 개념중에서 알아야할 또 다른 개념은 매서드 오버라이딩(Method overriding)입니다.

이는 상속받은 함수를 새롭게 구현하는 것입니다.

예를 들어, 위의 ECE 클래스에서 다른 방식으로 인사를 해야한다면 아래와 같이 매서드 오버라이딩을 하면 됩니다.



위의 코드에서 11,12번 라인을 보면 hello()함수를 새롭게 구현한 것을 보실 수 있습니다.

이러한 것이 매서드 오버라이딩입니다.



3. 연산자 오버로딩(overloading)


연산자 오버로딩이란 연산자(+, -, *, /, ... )를 객체끼리 사용할 수 있게 하도록 하는 것입니다.

즉 연산자를 새롭게 구현하는 것입니다.

연산자 오버로딩을 통해 다음과 같은 것을 구현할 수 있습니다.



코드에서 13,14라인을 보시면 __add__라는 함수를 구현한 것을 볼 수 있습니다.

위와 같은 것이 연산자 오버로딩입니다.


이렇게 해서 파이썬에서 클래스에 대한 개념에 대해 두번의 포스팅으로 알아보았습니다.

다음 포스팅에서는 '모듈'에 대해서 알아보겠습니다.



블로그 이미지

Tigercow.Door

Web Programming / Back-end / Database / AI / Algorithm / DeepLearning / etc

댓글을 달아 주세요