본문 바로가기
프로그래밍 언어/Python

Python(파이썬) 10. 상속과 오버 라이딩, 클래스 변수와 객체 변수

by kkmin93 2021. 9. 25.
반응형

 

" 슬럼프는 자기 내면에 있는 꾀병이다. 마음속 어딘가에 하기 싫은 구석이 있는데 슬럼프를 핑계로

안 하는 거이다. 하지만 난 반대로 끊임없이 도전했다. "

 

- 대한민국의 前 스피드 스케이팅 선수 이상화 - 

 

 

Python(파이썬) 10. 상속과 오버 라이딩, 클래스 변수와 객체 변수

목 차
1. 상속(Inheritance)
2. 오버 라이딩(Overriding)
3. 클래스 변수와 객체 변수

 

 

1. 상속(Inheritance)

 1) 클래스 상속이란, 한 클래스(부모 클래스)의 속성과 메소드를 새로운 클래스(자식 클래스)가 물려받는 것

  • class 클래스 이름(상속할 클래스 이름):

 

 2) 자식 클래스에서 부모 클래스의 메소드를 사용(호출)하고 싶으면, super().메소드 이름() 형식으로 호출한다.

 

 

 3) 부모에 없는 메소드를 추가 생성

  • 더하기 기능만 있는 계산기(부모 클래스)에 기능을 곱하기, 나누기를 추가한 계산기(자식 클래스)로 만들어 본다.

 

 4) 상속을 하는 이유

  • 기존 클래스를 변경하지 않고 기능을 추가하거나 기존 기능을 변경하려고 할 때 사용한다.

 

2. 오버 라이딩(Overriding)

 1) 부모 클래스의 메소드를 상속 받고 이를 자식 클래스에서 다시 정의하고자 할 때, 자식 클래스에서 같은 이름으로 메소드를 다시 정의하면 된다.

  • 부모, 자식 클래스에 똑같은 메소드가 존재하는데 자식 클래스의 메소드가 우선시된다.

 

 

3. 클래스 변수와 객체 변수

 1) 클래스 변수

  • 클래스에 독립적으로 정의된 변수, 해당 클래스로 만든 모든 객체에 공통으로 사용하는 변수
    • 객체는 서로 변수 및 메소드를 공유하지 않지만, 상속과 클래스 변수를 통해 서로 공유할 수 있게 된다.
  • 하나의 클래스를 두 개의 객체로 만들었을 때 클래스 변수를 호출해보면 값이 동일하다.

 

  • 클래스 변수는 인스턴스화 하지 않고 클래스 이름.변수명으로 호출 및 수정이 가능하다.

 

  • 클래스 변수는 모든 객체가 공통으로 가져야 하거나 모든 객체에 적용되어야 하는 값인 경우 선언하게 된다.

 

 2) 객체 변수

  • 클래스로부터 생성된 각각의 객체에 속해 있는 변수
  • 객체별로 생성된 객체 변수들은 서로 공유되지 않으며 변수들의 이름이 동일해도 영향을 미치지 않는다.
  • 객체가 가진 변수는 self.변수명으로 생성자에 의해 초기화되거나 객체 메소드에서 메소드(self, ...)를 이용하여 생성
  • 객체 변수와 클래스 변수 두 가지의 변수를 혼용하여 사용하게 되면 원하는 동작을 하지 않을 수 있으므로 주의해야 한다.
반응형