Python Camp

Logo

Life is short. You need Python.

05장 파이썬에 날개달기

5-1 ) 클래스


(1) 클래스와 객체

클래스(class) : 똑같은 무엇인가를 계속해서 만들어낼 수 있는 설계 도면
객체(object) : 클래스에 의해서 만들어진 피조물

파이썬 클래스의 가장 간단한 예

아무런 기능도 갖고 있지 않은 클래스 생성

class Cookie:
    pass

클래스에 의해 무수히 많은 객체가 만들어짐

a = Cookie()
b = Cookie()

[객체와 인스턴스의 차이]

a = Cookie()

a : 객체
a : 클래스 Cookie의 인스턴스


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

클래스를 어떻게 만들지 먼저 구상하기
사칙연산을 가능하게 하는 FourCal이라는 클래스를 만들어보자.

  1. 클래스 FourCal을 사용해서 객체를 만든다.
  2. 숫자를 객체에 지정해준다.
  3. add() 메서드를 수행하면 두 수를 합한 결과를 돌려준다.
  4. mul() 메서드를 수행하면 두 수를 곱한 결과를 돌려준다.
  5. sub() 메서드를 수행하면 두 수를 뺀 결과를 돌려준다.
  6. div() 메서드를 수행하면 두 수를 나눈 결과를 돌려준다.

클래스 구조 만들기

class FourCal:
    pass

현재 FourCal 클래스는 아무런 변수나 메서드도 포함하고있지 않지만 우릭 ㅏ원하는 객체를 만들 수는 있다.

a = FourCal();
type(a)

객체에 숫자 지정할 수 있게 만들기

a.setdata(4,2)

메서드(Method)
클래스 안에 구현된 함수

class FourCal:
    def setdata(self,first,second):    #매개변수 (argument)
        self.first = first             #메서드의 수행문
        self.second = second           #메서드의 수행문

두 개의 숫자만 입력받으려고 했는데… self는 뭐예요?

a = FourCal()
a.setdata(4, 2)

setdata라는 메서드는 총 3개의 매개변수를 필요로 하는데 실제로는 2개의 값만 전달된다.
왜 그럴까?
객체를 통해 클래스의 메서드를 호출하려면 도트(.)연산자를 이용해야 한다.

from IPython.display import Image
PATH = "figures"
Image(filename = PATH + "/class_01.png", width=500)

파이썬 메서드의 첫번째 매개변수명은 관례적으로 self라는 이름을 사용한다.
호출 시 호출한 객체 자신이 전달되기 때문에 self라는 이름을 사용하게 된 것이다.
물론 self말고 다른 이름을 사용해도 상관은 없다.

setdata 메서드의 수행문
setdata 메서드에는 수행할 문장이 2개 있다.

self.first = first
self.second = second
# 객체변수 초기화
a.first = 4
a.second = 2

더하기 기능 만들기
2개의 숫자를 더하는 기능을 추가해보자.

class FourCal:
    def setdata(self,first,second):    #매개변수 (argument)
        self.first = first             #메서드의 수행문
        self.second = second           #메서드의 수행문
    
    def add(self):
        result = self.first + self.second
        return result
a = FourCal()
a.setdata(4,2)
print(a.add())

곱하기,빼기,나누기 기능 만들기

class FourCal:
    def setdata(self,first,second):    
        self.first = first             
        self.second = second           
    
    def add(self):
        result = self.first + self.second
        return result
    
    # 곱하기
    def mul(self):
        result = self.first * self.second
        return result
    
    # 빼기
    def sub(self):
        result = self.first - self.second
        return result
    
    # 곱하기
    def div(self):
        result = self.first / self.second
        return result
a = FourCal()
b = FourCal()
a.setdata(4,2)
b.setdata(3,7)
a.add()
a.sub()
a.div()
b.add()
b.mul()
b.sub()
b.div()

<Question 01>

「”비행기 클래스를 사용하여 두 개의 전세기를 만들어보자.”」

비행기 클래스가 가지고 있는 메서드는 다음과 같다.

  1. flying
  2. engine_break
  3. take_off
  4. landing

전세기의 이름은 ‘KoreanAir’, ‘Asiana’ 이다.
다음의 코드를 입력했을 때, 아래와 같이 출력된다.

KoreanAir = Flight()
Asiana = Flight()
KoreanAir.flying()
비행기가 비행중입니다.
Asiana.engine_break()
비행기의 엔진이 고장났습니다.
KoreanAir.take_off('인천')
비행기가 인천에서 출발합니다.
Asiana.landing('영국')
비행기가 영국에 도착했습니다.
class Flight:
    
    def ...
class Flight:

    def flying(self):
        print('비행기가 비행중입니다.')
        
    def engine_break(self):
        print('비행기의 엔진이 고장났습니다.')
        
    def take_off(self,place):
        print('비행기가 '+ place+'에서 출발합니다.')
    
    def landing(self, place):
        print('비행기가 '+place+'에 도착했습니다.')

To Home
To Lecture List