클래스의 개념을 이해하기 위해 계산기 혹은 쿠키틀을 예로 들면 좋다.
철수가 있고 계산기 한대가 있다.
철수는 계산기를 사용하여 6+6을 계산한다. 계산기엔 결과 12가 출력된다.
그런데 이 상태에서 다른 계산이 필요하게 되었다. 7+7을 해야한다.
계산기 한대가 더 필요하게 된다. 계산기 한대를 더 샀다.
그런데 이 상태에서 또 다른 계산이 필요하게 되었다. 8+8을 해야한다.
계산기를 또 샀다.
그리고 또다른 계산이 필요하게 되었다.
계산기를 또 샀다.
계산기를 계속 산다.
이 상황을 함수로 표현하면 다음과 같다.
def sum1(self, data1, data2)
return data1 + data2
def sum2(self, data1, data2)
return data1 + data2
def sum3(self, data1, data2)
return data1 + data2
def sum4(self, data1, data2)
return data1 + data2
print(sum1(6+6))
print(sum2(7+7))
print(sum3(8+8))
print(sum4(9+9))
만약 계산기가 100개가 필요하다면 계산기를 100개를 살 것인가?
이 때 클래스를 사용하게 된다.
계산기 클래스를 만든다.
그리고 계산기 객체를 생성한다. 100개가 필요하면 100개를 생성하면 그만이다.
클래스를 쿠키틀처럼 생각하면 쉽다.
쿠키틀로 계산기를 원하는 만큼 찍어낸다.
틀에서 나온 계산기는 객체가 된다.
각각의 객체는 부서져도 다른 객체에 영향을 미치지 않는다.
쿠키틀인 계산기도 영향을 받지 않는다.
모두가 독립적이다.
객체는 인스턴스라고 불리운다.
같은 의미이지만 어느 관점에서 바라보느냐에 따라서 불리우는 것이 다르다.
a = calculator()
a는 calculator클래스의 인스턴스이다.
a는 객체이다.
위의 말은 모두 맞는 말이다.
객체가 클래스와 함께 설명되어지면 인스턴스라 불리운다.
그렇지 않으면 객체는 객체이다.
클래스 내의 function들은 method 메서드라고 부른다.
메서드는 매개변수를 갖는다
메서드의 첫번째 매개변수는 항상 객체가 되어야 한다. 보통 self로 선언하여 사용한다.
'''
class Studycal:
def __init__(self):
self.result = 0
def setdata(self, x, y): #클래스의 메서드를 정의할 때 첫번째 매개변수는 항상 self, 즉 object이다.
self.data1 = x # 매개변수를 객체변수에 저장
self.data2 = y
def sum(self):
return self.data1 + self.data2
def sub(self):
return self.data1 - self.data2
def mul(self):
return self.data1 * self.data2
def div(self):
return self.data1 / self.data2
a = Studycal()
b = Studycal()
a.setdata(3,3)
b.setdata(4,4)
print("object a : sum %d" % a.sum())
print("object b : sum %d" % b.sum())
print("object a : sub %d" % a.sub())
print("object b : sub %d" % b.sub())
print("object a : mul %d" % a.mul())
print("object b : mul %d" % b.mul())
print("object a : div %d" % a.div())
print("object b : div %d" % b.div())
'너나코 스터디' 카테고리의 다른 글
홈페이지 공사중입니다... (0) | 2020.07.30 |
---|---|
[너나코 파이썬] 리스트와 딕셔너리(List & Dictionary) (0) | 2019.06.09 |
[파이썬 장고] 웹프레임워크란? (0) | 2019.03.06 |