<파이썬 문법 기초> 클래스

이용헌·2022년 1월 5일
0
post-thumbnail

학습 내용 요약

  1. 클래스
  2. 상속

1. 클래스

1) 정의
클래스는 객체를 생성하는 문법이다. 객체는 검사, 간호사, 프로그래머, 자동차, 체크박스 등의 특정 개념이나 모양으로 존재하는 것이다. 이런 객체를 생성하는 틀이 바로 클래스다.

클래스로 만든 객체는 중요한 특징이 있다. 객체마다 고유한 성격을 가지기 때문에 서로 다른 객체에 영향을 주지 않는다는 것이다. 그렇기 때문에 독립적인 값을 저장할 수 있고, 이를 조합해서 활용할 수 있는 것이다.

위와 같은 프로그래밍 방법을 객체지향형 프로그래밍이라고 한다. 다양하고 복잡한 문제를 잘게 나눠 객체를 만들고, 여러 객체를 조합해 문제를 해결하는 방식이다.

2) 기본 구조
클래스는 갖고 있는 특징인 속성과 동작과 같은 기능인 메서드를 내부에 가진다.

class Warrior:
    def __init__(self,name,hp):
    	self.name = name
        self.hp = hp
    
    def attack(self,damage,target):
        self.damage = damage
        
w = Warrior('전사',100)
w.attack(20,'멧돼지')

위 예시에서 name, hp가 바로 속성에 해당하고, attack이 메서드에 해당한다. 위 코드에 나오는 용어에 대해 조금 설명하자면 아래와 같다.

  • def __init__: 생성자를 만드는 메서드로 객체가 생성될 때 자동으로 호출된다. 즉, 객체의 초기 상태를 만드는 초기화 부분이다.
  • self: 메서드의 첫 번째 매개변수로써 객체를 호출할 때 객체 자신이 전달되기 때문에 사용하는 것
  • w = Warrior 이 부분이 객체를 생성하는 부분이고,
  • w.attack 이것이 메서드를 실행하는 부분이다. 여기서 w.의 w가 메서드의 첫 번째 매개변수 self로 호출되는 것이다.
  • w는 객체이자 인스턴스라고 한다.
    ※ 인스턴스?
    인스턴스는 클래스로 만든 객체이다. 즉, 객체와 같은 의미인데, 클래스와 객체의 관계 위주로 설명할 때 사용하는 용어다. 위의 예시를 예로 들자면, 'w는 Warrior 클래스의 인스턴스'고, 'w는 객체'이다.

3) 객체 변수, 클래스 변수
객체 내에 정의한 변수는 객체 변수, 클래스 내에 만든 변수는 클래스 변수라고 한다. 객체 변수는 객체의 특성대로 다른 객체 변수에 영향을 주지 않고 독립적인 상태를 유지한다. 하지만, 클래스 변수는 클래스로 만든 모든 객체가 공유하기 때문에, 변경하면 동일한 이름의 각 객체 변수도 변경된다. 따라서, 클래스 변수보다 객체 변수를 더 신경쓰고 사용해야 할 것이다.

2. 상속

1) 정의
상속은 물려받는다는 의미다. 즉, 해당 클래스의 상위 클래스의 특성을 물려받아 만든다는 것을 의미한다. 상속을 표현하기 위해서는 아래처럼 작성하면 된다.

class Warrior(Job):
	

상속을 받으면 상위 클래스의 속성을 그대로 가져와서 사용할 수 있고, 메서드를 해당 클래스에 맞게 수정해서 쓸 수도 있다. 동일한 이름으로 메서드를 받아와 새로 작성하는 것을 메서드 오버라이딩이라 한다.

2) 이유
기존 클래스를 변경하지 않고 기능을 추가 또는 변경할 때 사용한다. 특히, 기존 클래스가 라이브러리 형태로 제공되거나 수정이 불가능한 상황에서 상속을 사용해야 하는 것이다.

어렵거나 완전히 이해 못한 내용
클래스를 사용해서 상속, 메서드 오버라이딩을 하고 여러 객체를 생성해 보기도 했다. 하지만, 종종 메서드로 받는 매개변수를 어떻게 넣고 활용하는지 헷갈리는 경우가 있었다. 특히, self를 넣는 부분과 아닌 부분을 헷갈려 했는데, 내용을 정리하면서 어느 정도 감을 잡고 있는 중이다. 좀 더 익숙해지도록 연습을 해야겠다.

profile
세상에 기여하는 개발자가 되자

0개의 댓글

관련 채용 정보