Python Basic Syntax(2) - Class

에이블·2022년 2월 4일
0

파이썬

목록 보기
9/20

본 게시물은 코드프레소의 code.PRESS-UP 체험단 과정을 담은 게시물입니다.

해당 게시물 수강강좌 :

금융 데이터 분석을 위한 파이썬 프로그래밍

금융 데이터 분석을 위한 파이썬 프로그래밍 시작하기

https://www.codepresso.kr/course/51

클래스와 개체

코드프레소 강의에서는 클래스를 '나만의 데이터 타입' 이라고 설명하고 있습니다.

무슨 말 일까요?

일반적인 데이터타입인 문자열/숫자/리스트에 대해서는 이미 파이썬이 제공을 하고 있고 기본적인 데이터구조이므로 손쉽게 만들 수 있습니다.

하지만 '학생' 이라는 데이터 타입은? '주식종목' 이라는 데이터 타입은?

코드프레소 강의에서는 이렇게 구체적인 데이터 타입이 필요할 때 어떻게 만들꺼냐에 대해서 설명하고 있습니다.

클래스는 보통 설계도로 많이 비유됩니다.
실물을 만들기 전에 '어떻게' 만들 것인가를 적어놓는 것입니다.

개체(객체)는 Object라고 불리며, 비슷한 개념으로 인스턴스가 있습니다.

예를 들어 설명하면
과자를 만드는 과자 틀과 그것을 사용해 만든 과자입니다.

  • 과자 틀 → 클래스 (class)
  • 과자 틀에 의해서 만들어진 과자 → 객체 (object)

여기에서 설명할 클래스는 과자 틀과 비슷합니다.
클래스(class)란 똑같은 무엇인가를 계속해서 만들어 낼 수 있는 설계 도면이고(과자 틀), 객체(object)란 클래스로 만든 피조물(과자 틀을 사용해 만든 과자)을 뜻합니다.

클래스의 구성

클래스는 변수와 메소드로 구성되어 있습니다.

변수는 선언과 생성시기(메모리 할당 시기)
클래스변수/인스턴스 변수 두개로 구분할 수 있습니다.

  • 클래스 변수는 모든 인스턴스에서나 사용
  • 인스턴스 변수는 인스턴스가 생성 될 때 메모리에 할당

인스턴스 변수

  • 인스턴스가 생성 될 때 생성
  • 인스턴스 변수의 값을 읽어오거나 저장하려면 인스턴스를 먼저 생성
  • 인스턴스 별로 다른 값을 가질 수 있으므로, 각각의 인스턴스마다 고유의 값을 가져야할 때는 인스턴스 변수로 선언
class Airplane:
	airplane_price = 1.1 // 가격상승폭, 클래스 변수
    
    def __init__(self. wings, wheels, name, price):
    	self.wheels = wheels
        self.wings = wings
        self.name = name
        self.price = price
        // 인스턴스 변수들, 생성한 인스턴스마다 각각 다른 값을 갖는다
    
    def name_print(self):  // 메소드 
    	return str(self.name)
        
    def price_up(self):
    	self.price = int(self.price * Airplane.airplane_price)

클래스 안에 구현된 함수는 다른 말로 메서드(Method) 라고 부른다.
앞으로 클래스 내부의 함수는 항상 메서드라고 표현하니 기억해 두자.

객체가 행동할 것들이라고 생각하면 편하다.

self에 대해서는 나중에 자세히 알아보겠다.

상속

상속(Inheritance)이란 "물려받다" 라는 뜻으로, "재산을 상속받다"라고 할 때의 상속과 같은 의미이다.

클래스에서도 이 개념을 적용 할 수 있다.
어떤 클래스를 만들 때 다른 클래스의 기능을 물려받을 수 있게 만드는 것이다.

예를 들어 가수는 사람이다.
가수 클래스 안에 사람이 기본적으로 하는 행동(메소드)를 모두 구현할 필요가 없다.

다른 직업 클래스도 마찬가지이다. 의사, 개발자, 선생님 모두 사람이기 때문에 각 직업클래스의 특징만 구현하고 기본적인 행동(메소드)는 사람 클래스를 상속받으면 된다.

사람 ---> 가수

class Person:
	def action1(self):
    	print("action 1")


class Singer(Person):
	pass
    

JYP = Singer()
JYP.action1

>>> action1

위 처럼 Person클래스를 상속받은 Singer클래스를 통해 생성한 JYP 인스턴스는 Person클래스의 메소드를 사용할 수 있다.

여기까지가 코드프레소 강의를 통해 알아본 클래스/인스턴스 개념이였다.

사실 클래스와 인스턴스 개념은 매우 방대하다.

특히 파이썬에서는 self__init__ 개념을 통한 생성자/인스턴스가 매우 독특한 객체지향을 가지고 있다.

self __init__ 개념은 추후에 시간이 허락한다면 자세하게 다뤄보겠다.

다음 코드프레소 강의를 통해 공부하는 것은
본격적으로 파이썬의 강점인 Library를 공부하는 것이다.

파이썬에는 다양한 Library가 있다. 이를 적절하게 활용하면 데이터분석에 실력이 크게 향상 될 것이다.

다음 코드프레소 강좌:

파이썬으로 배우는 데이터 분석 : NumPy

NumPy 라이브러리로 데이터 분석 시작하기

https://www.codepresso.kr/course/55

profile
꺾이지 않는 마음

0개의 댓글