Life is short. You need Python.
클래스(class) : 똑같은 무엇인가를 계속해서 만들어낼 수 있는 설계 도면
객체(object) : 클래스에 의해서 만들어진 피조물
아무런 기능도 갖고 있지 않은 클래스 생성
class Cookie:
pass
클래스에 의해 무수히 많은 객체가 만들어짐
a = Cookie()
b = Cookie()
[객체와 인스턴스의 차이]
a = Cookie()
a : 객체
a : 클래스 Cookie의 인스턴스
클래스를 어떻게 만들지 먼저 구상하기
사칙연산을 가능하게 하는 FourCal이라는 클래스를 만들어보자.
클래스 구조 만들기
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()
「”비행기 클래스를 사용하여 두 개의 전세기를 만들어보자.”」
비행기 클래스가 가지고 있는 메서드는 다음과 같다.
전세기의 이름은 ‘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+'에 도착했습니다.')