본문 바로가기

python 시작하기

python 클래스

728x90
반응형

이번 포스팅은 클래스입니다. 

클래스는 반, 학급, 강의 와 같이 어느 목록의  묶음 상태입니다. 일종의 공간을 만들어 주는 함수인 것입니다.

그럼 왜 클래스를 쓰냐? 공간을 분리하고 지역변수가 많아지면서 더욱 복잡해지는 거 아니냐 하실 수 있습니다.

그래서 이번 포스팅에서는 클래스를 왜 사용하고 어떻게 활용하는지 알아 보겠습니다.

 

class를 사용하는 이유

  • 코드의 재사용성으로 간단한 호출로 다시 사용가능
  • 구조화된 데이터 관리에 매우 좋음
  • 클래스를 사용하면 연관된 데이터와 기능(메서드)을 하나의 단위로 묶어 관리할 수 있어 코드가 더욱 직관적이고 유지보가 용이

class의 구성

<예시>

위에서 간략히 소개했지만, 클래스란?

  • 객체에 대한 속성과 기능을 코드로 구현 한 한 것 정확한 명칭의 유래는 (Classification(분류))에서 유래함

그럼 이제 여기서 객체란 무엇이냐?

  • 객체의 특성(property), 속성(attribute) → 멤버변수
  • 객체가 하는 기능 → 멤버 함수

class를 선언하는 것은 간단하다. 함수를 선언하듯, class함수를 입력후 원하는 class이름을 입력하고 콜론을 찍고 이제 하위 코드를 짜면 되는 것이다.

class class_name:

이제 함수와 차이점은 함수는 함수를 호출만 하면 바로 리턴값을 사용가능 하지만, 클래스는 인스턴스를 생성해 주어야 사용이 가능하다는 차이점이 있습니다.

위 처럼 클래스를 선언한 후에 indent없이 임의의 인스턴스(클래스와 관련된 이름이면 매우 좋습니다.)를 생성해 주시면 됩니다.

class_test = class_name()

이 처럼 설정해주신 다음에 클래스내에 함수들은 메서드 방식 함수.메서드와 같이 사용하실 수 있습니다.

아! 인스턴스가 무엇이냐 객체를 클래스로부터 만들어진 객체를 말하는 것입니다.

그럼 글을 충분히 읽었으니 직접 쳐봅시다.

실습(자동차 종류와 배기량 출력)

  • 자동차 클래스를 정의하세요. (자동차 모델 변수: model, 배기량 변수:cc)
  • 인스턴스 생성
  • 2가지의 자동차를 입력받고 출력

'

'

'

'

'

<클래스 정의 실습>

자 이제 클래스 선언과 인스턴스 생성이 무엇인지 이해가 충분히 되셨길 바랍니다.

클래스 함수(메서드(Method))

클래스에 대해서 이해가 되었으면, 위에서 언급한 클래스 내부 함수 메서드를 이해하러 가봅시다.

클래스 함수란?

  • 메서드 클래스 안에 정의된 함수
  • 메서드 선언 시 첫 번째 매개변수로 self 필수 작성
    • self는 자기 자신을 뜻함
    • 클래스를 인스턴스롸 하지 않고 호출해서 사용하는 경우에는 필요 없음
    • 호출할 때 self에 값을 직접 넘겨주지 않음 (자동 할당)
    • self는 키워드가 아닌 식별자명. 즉, 다른 이름을 사용할 수 있지만, 현재 객체 자신을 의미하기 때문에 대부분의 개발자가 self사용

그럼 세세한 설명은 위에서 했으니 실습코드를 더 간단하게 바꿔 보겠습니다.

그런데 이제 저기 model, cc를 계속 입력해줘야 되는게 귀찮아 보이지 않으신가요?

이때 사용하는 것이 생성자 입니다.

  • 생성자: 
  • 클래스를 생성할 때 호출되는 명령어 집합, 초기자라고도 합니다. 생성자는 def __init__(self, ````)의 형태로 작성됩니다. return값은 없읍니다. 
  • 단, 생성자는 있어도 되고 없어도 되는 존재로 클래스를 단순히 구조화된 데이터 저장소로 사용하려는 경우 사용됩니다.

그럼 생성자를 통해 더욱 간단하게 해봅시다.

이제 우리는 Car(변수1, 변수2)의 형태로 원하는 문장을 출력할 수 있는 것입니다.

이 외에도

특수 메서드

def __str__(self): (문자열을 return라는 함수)

가 있습니다.

 

지금까지 따라 오셨다면 혼합적인 실습을 한번 진행해야할 타이밍입니다.

실습(사칙연산 클래스 만들기)

  • 인스턴스를 생성할 때 2개의 숫자를 class로 보냅니다.
  • add 메서드(함수)는 두 수를 더한 결과값을 반환합니다.
  • sub 메서드(함수)는 두 수를 뺀 결과값을 반환합니다.
  • mul 메서드(함수)는 두 수를 곱한 결과값을 반환합니다.
  • div 메서드(함수)는 두 수를 나눈 결과값을 반환합니다.

'

'

'

'

<해답 예시>

여기까지 클래스에 기본요소는 다 학습 한것 같습니다. 그럼 다음시간에는 클래스 변수와 인스턴스 변수에 대해서 알아보도록 하겠습니다.

오늘도 같이 공부하시느라 수고 많으셨습니다!!!!!!

 

반응형