14. 클래스(class) > 파이썬 기초

본문 바로가기
사이트 내 전체검색

회원로그인

올서베이넷
무료 온라인 설문 사이트
OVITII
웹 프레젠테이션 도구

파이썬 기초

14. 클래스(class)

페이지정보

글쓴이 관리자 조회 36,540 조회 날짜 19-05-28 12:56 / Update:19-11-12 15:02
댓글 0 댓글

SNS 공유

  • 트위터로 보내기
  • 페이스북으로 보내기
  • 구글플러스로 보내기

내용

클래스 (class)

 

최근의 프로그래밍 언어를 보면 객체지향(Object Orientied)이라는 말을 많이 사용한다.

 

객체(Object)는 프로그램에서 존재하는 독립된 개체라 생각하면 된다. 하나의 함수도 객체가 될 수 있고, GUI환경에서 Button 하나가 객체가 될 수 있다.

 

이러한 객체를 사용하는 이유는 재사용성이다. 한번 만들어 둔 것을 필요할 때 마다 호출하여, 다른 인수를 통해 다른 객체를 만들어 낼 수 있다. 

 

객체를 이해하기 위해서 많이 사용하는 예를 든다면 붕어빵 틀이라고 할 수 있다. 붕어빵 틀은 고정되어 있다. 여기에 밀가루 반죽과 팥을 넣으면 팥 붕어빵이 만들어지고, 계란을 넣으면 계란 붕어빵이 만들어진다. 그 모양은 같으나 내용물이 다르다.

 

이렇게 한번 만들어 놓은 틀에 필요한 재료를 넣어서 입맛에 맞게 만들 수 있는 것이 객체이다. 

 

일반적으로 프로그래밍 언어에서는 클래스로 객체를 많이 표현한다.

 

클래스를 좀 더 쉽게 이해하자면, 변수, 함수의 집합이라고 생각해도 된다. 좀 더 추가하여 설명하자면 클래스 내부에 선언된 함수들을 메서드(method)라고 표현한다.

용어 설명 : https://www.jbmpa.com/python_tip/8

 

 

클래스의 기본 형태

 

class 클래스 이름:

    def __init__(self, 매개변수)

        self.변수

    메서드(self, 매개변수)

    메서드(self, 매개변수)

 

 

클래스가 생성될 때, __init__ 메서드가 호출된다. 함수에서 매개변수(parameter)로 인자(argument)들을 넘겨주는 것처럼 클래스에 인자들을 넘기면 __init__ (양쪽에 underscore 2개씩) 메서드에서 인자들을 받아들인다.

 

다음의 예로 클래스를 이해해보자.

 

class Book:
    def __init__(self, title):
        self.title = title
        self.price
        self.publisher
        self.year
                
    def price(self, price):
        self.price = price
    
    def publisher(self, publisher):
        self.publisher = publisher
    
    def year(self, year):
        self.year = year
        
    def getBook(self):        
        bookinfo = "책제목 : " + self.title + ", 출판사 :  " + self.publisher + ", 출판년도 :  " + self.year + ", 가격 :  " + self.price        
        return bookinfo
    
    

a = Book("운명이다")
b = Book("바보 산을 옮기다")

 

a.publisher("사람사는 세상")
a.year("2010")
a.price("13500")

ainfo = a.getBook()

print(ainfo)

 

b.publisher("노무현재단")
b.year("2015")
b.price("15000")

binfo = b.getBook()

print(binfo)

책제목 : 운명이다, 출판사 :  사람사는 세상, 출판년도 :  2010, 가격 :  13500
책제목 : 바보 산을 옮기다, 출판사 :  노무현재단, 출판년도 :  2015, 가격 :  15000

 

소스 설명 

class Book:
    def __init__(self, title):
        self.title = title
        self.price
        self.publisher
        self.year

클래스 선언.

선언된 클래스를 호출할 때, 인자를 받아들일때 사용하는 메서드는 __init__ 이다. 언더바(__)가 두개 들어간다.

클래스 내부에 들어있는 변수와 메서드는 모두 self가 앞에 붙는다. self는 말 그대로 클래스 자기 자신을 의미한다.

__init__ 메서드안에 선언된 변수는 클래스 내부 어디에서건 사용할 수 있다.

self.title, self.price, self.publisher, self.year는 global 선언을 해주지 않아도 클래스 내부의 다른 메서드에서 모두 공유하여 사용할 수 있다.

    def price(self, price):
        self.price = price

클래스 내부의 메서드이다. 

가격을 입력하는 메서드이다.

클래스 내부에서 클래스 메서드를 사용하기 위해서는 self.메서드 의 형태로 사용한다.

클래스 외부에서 클래스 메서드를 사용하기 위해서는 클래스객체.메서드 의 형태로 사용한다.

    def getBook(self):        
        bookinfo = "책제목 : " + self.title + ", 출판사 :  " + self.publisher + ", 출판년도 :  " + self.year + ", 가격 :  " + self.price        
        return bookinfo

클래스에서 저장된 값들을 출력해주는 메서드이다.

클래스 내부 변수에 저장된 값들을 모두 사용할 수 있다.

return을 통해 결과를 반환한다.

a = Book("운명이다")
b = Book("바보 산을 옮기다")

클래스 객체 호출.

a = Book("운명이다")의 의미는

위에서 만들어 놓은 Book이라는 클래스를 불러들인다. 다만 Book 클래스를 불러들일 때(호출할때, 만들어낼 때), 책 제목은 "운명이다"라고 저장한다.

이렇게 만들어 낸 책은 a라는 객체로 저장한다.

 

b = Book("바보 산을 옮기다"의 의미도 위와 마찬가지다.

하지만 생성한 Book 클래스는 b라는 객체로 저장되었다.

 

a와 b는 같은 클래스로 만들어진 객체지만 둘은 서로 다른 독립된 객체이다. 둘 사이의 변수들은 공유되지 않고 완전히 독립적이다.

a.publisher("사람사는 세상")
a.year("2010")
a.price("13500")

ainfo = a.getBook()

print(ainfo)

Book 클래스로 만든 a라는 객체에 내부 메서드를 이용하여 각 정보들을 입력한다.

클래스 내부 메서드는 클래스객체.메서드 형태로 사용한다.

 

그리고 getBook() 메서드를 통해 모든 정보를 받아서 출력한다.

 


클래스는 같은 내용을 반복적으로 사용하되, 그 내용이 독립적인 것을 만들어 낼 때 유용하게 사용할 수 있다.

 

 

물론 클래스가 프로그래밍을 할 때 필수적으로 필요한 것은 아니다. 최근에는 다시 객체지향이 아니라 함수지향적으로 코딩하는 사람들도 많다.

 

프로그램의 성격이나 용도에 맞게 필요한 것들을 만들어서 사용하면 된다.

 

 

 

3109821002_1559080055.0569.png

댓글목록 sfs

총 30 건 , 1 페이지
게시물 검색
파이썬 기초 목록
번호 제목 글쓴이 조회 날짜
1 관리자 34602 05-02
2 관리자 41866 05-02
3 관리자 27581 05-02
4 관리자 42548 05-02
5 관리자 38174 05-02
6 관리자 32226 05-02
7 관리자 34046 05-02
8 관리자 32780 05-02
9 관리자 31650 05-02
10 관리자 34395 05-02
11 관리자 30145 05-02
12 관리자 52562 05-02
13 관리자 39099 05-02
14 관리자 35541 05-06
15 관리자 26597 05-06
16 관리자 25873 05-06
17 관리자 30240 05-06
18 관리자 26501 05-07
19 관리자 40767 05-07
20 관리자 46967 05-07
21 관리자 35767 05-07
22 관리자 36035 05-07
열람중 관리자 36541 05-28
24 관리자 46411 05-28
25 관리자 35524 05-28
26 관리자 38630 06-04
27 관리자 37876 06-11
28 관리자 37179 06-12
29 관리자 36031 12-21
30 관리자 27430 12-25
GNUBOARD_M
Copyright © JBMPA.com All rights reserved.