내가 보려고 만든 블로그
<파이썬> 클래스의 상속과 super 에 대하여 본문
파이썬을 데이터분석을 위하여 사용하던 사람들이 비교적 쉽게 사용할 수 있는 Pandas , Keras 를 지나 Pytorch등을 사용하면 어려움을 겪는 부분이 있다. 그 전까지는 절차지향으로 코드를 작성하더라도 큰 무리가 없었지만 Pytorch를 사용하기 위해서는 객체지향 ,클래스 등에 대한 이해가 필수적이다. 그 중에서도 파이토치를 처음 공부할때 공부하였던 클래스의 상속과 super에 대하여 간략하게 설명해본다.
파이썬에서는 클래스를 상속받아 사용할 수 있다. 옷으로 예를 들어보자.
가령 바지라는 클래스를 통하여 청바지 , 반바지 , 슬렉스 등등의 객체를 만들 수 있다고 하자. 더 나아가서 바지라는 클래스는 상의 , 치마 등의 의류라는 클래스를 통하여 만들어질 수 있을 것 이다.
바지 ,상의, 치마 등의 클래스를 각각 생성하는 것 보다 의류라는 클래스에서 바지를 만들고 바지라는 클래스에서 반바지, 청바지등의 객체를 생성하는 것이 훨씬 깔금한 방법일 것이다.
이러한 방법 , 의류라는 클래스에서 바지라는 클래스를 생성하는 것을 클래스의 상속이라고 부른다. 파이썬에서 클래스의 상속은 다음과 같이 작성한다.
다음과 같이 클래스를 상속하려면 클래스를 생성할 때 상위클래스를 변수로 넣어주기만 하면 된다.
하지만 여기서 문제가 발생한다. 상위클래스의 where 속성을 가지고 오고싶지만 __init__ 매소드가 오버라이딩 되면서
price_range 속성에 대해서는 출력이 가능하지만 where 속성에 대하여 출력이 되지않고 오류가 발생하게 된다.
이러한 오버라이딩을 피하고 상위클래스의 속성을 가져오기 위하여 사용하는 것 이
super().__init__() 이다.
다음과 같이 오버라이딩 되지 않고 부모클래스가 가지고 있던 where 가 잘 출력되는 것을 확인할 수있다.
주의해야할 점은 부모의 __init__ 메소드에서 받는 where를 하위 클래스의 변수값과 super 안에 반드시 넣어줘야 한다.
'Python | Web > Python' 카테고리의 다른 글
<파이썬> Descriptor (0) | 2021.08.08 |
---|---|
<파이썬> Property (0) | 2021.08.08 |
< 파이썬 > Generator 란 (0) | 2021.08.01 |
<파이썬> Magic Method 란? (0) | 2021.07.18 |
<파이썬> 메타 클래스( Meta Class) 란? (0) | 2021.07.03 |