본문 바로가기

카테고리 없음

TIL [파이썬] 클래스의 이해

반응형

파이썬의 클래스는 객체와의 관계사이에서 그 의미를 잘 이해할 수 있다.
클래스 : 설계도

객체 : 설계도에 의해 만들어진 실체

로 이해하면 머리 속에 쏙쏙 들어온다.

설계도를 만들어두지 않은 채 경험에 의존해 집을 짓는다면,

인간은 분명히 실수를 하기 때문에 미묘하게 다른 집이 완성될 것이다.

따라서 설계도를 만들어두고, 이에 맞추어 제작을 해야 동일한 형태의 집이 지어질 것이다.

클래스도 마찬가지다.
클래스가 있으면 동일한 여러 객체가 필요할 때,
간편하게 객체를 생성할 수 있다.

클래스는 여러 함수를 가질 수 있다.
함수는 앞서 이해했듯이 우리가 원하는 동작을 하도록 설계해둔 알고리즘이라고 할 수 있다.
우리가 인풋을 했을 때, 해당 인풋이 작성해둔 함수에 들어가 작동하고, 결괏값을 낸다.


사칙연산이 가능한 계산기를 만든다구 생각해보자.
이를 하기 위해서 더하기, 빼기, 곱하기, 나누기의 기능이 필요하다.

 

4가지의 기능은 각각 함수로 구현을 하고, 이를 하나의 클래스에 담는다.
클래스 안에 있는 함수는 매서드라고 부른다.

 

클래스 구조 만들기

Class cal():
    def setdata(self, first, second):
        self.first= first
        self.second=second

위에서 우리는 cal이라는 클래스를 만들고
그 안에 setdata라고 부르는 매서드를 만들었다.
이 매서드에 입력값은 총 3개다 self. first, second.

이 중 self는 좀 특별하다.

a = cal()
a.setdata(2,3)

cal이라는 클래스로 a라는 객체를 만들었고

setdata라는 매서드 안에 2와 3의 값을 넣었다.
좀 전 위에서 우리는 분명 3개의 입력값만을 만들었는데 2개의 입력값만 넣었다.
그 이유는 객체를 불러올 때 호출한 자신을 첫번째 매개변수로 불러오기 때문이다.

따라서 2와 3은 각각 first와 second에 입력이 되고 결국 self.first와 self.second에 그 값이 저장된다.


더하기 기능 추가하기

Class cal():
    def setdata(self, first, second):
        self.first= first
        self.second=second
    def add(self):
        result = self.first+self.second
        return result

위에서 add라는 매서드명을 가진 기능을 추가했다.

result는 self.first값과 self.second값을 더해, 더해진 값을 리턴해준다.

a = cal()
a.setdata(2,3)
print(a.add())
5

a라는 객체에 cal을 호출하고 2,3을 first, second에 저장한다.
그리고 print(a.add())를 하면 5이라는 값이 나온다.
객체에 저장하고 5가 나오는 과정을 톺아보면 다음과 같다.
2와 3은 self.first와 self.second에 저장이 되었다.

a.add()를 살펴보면 a라는 객체고, 온점(.)은 연결자이다. a안에 있는 add함수를 불러오는 것이고,

add함수는 result 값을 return한다.
result 값은 self.first와 self.second의 합으로 구성된다.
우리는 self.first와 self.second에 2와 3이 저장되어 있는 것을 앞서 알고있다.
따라서 result가 5가 됨을 알 수 있다.

 

a.dd()라는 값이 5가 되고 해당 값을 print하므로 5가 출력된 것이다.

 


생성자

 

생성자(Constructor)란 객체가 생성될 때 자동으로 호출되는 메서드를 의미한다.

파이썬 매서드 이름으로 __init__ 을 넣으면 이 매서드는 생성자가 된다.

 

Class cal():
    def __init__(self, first, second):
        self.first= first
        self.second=second
    def setdata(self, first, second):
        self.first= first
        self.second=second
    def add(self):
        result = self.first+self.second
        return result

앞서 우리는

a = cal()
a.setdata(2,3)

위아 같은 순서를 통해서만 값을 줄 수 있었다.

하지만 생성자를 통해 아래와 같은 방식으로 더 간편하게 값을 줄 수 있다.

 

a = cal(3,2)

클래스 상속

클래스 상속은 "재산을 상속받다"을 때의 상속과 같은 의미다. 한클래스에서 만든 기능을 다른 클래스에 물려주는 것이다.

 

위에서 우리는 더하기 기능을 가진 cal이라는 이름의 클래스를 만들었다.
이 기능을 다른 클래스에 상속해보자.

class addcal(cal):
    pass

addcal이라는 이름으로 cal이 가진 기능을 상속했다.

상속을해서 새로운 클래스를 만들면, 기존의 코드를 굳이 다시 입력할 필요없이 기능을 써먹을 수 있다.
뿐만 아니라 함수를 추가로 새롭게 생성해내 기능을 늘릴 수 있다.

 

addcal이라는 이름에 뺄셈 기능을 추가해보자.

class addcal(cal):
    sub(self):
    result= self.first - self.second
    return result

상속은 위처럼 기존 클래스를 그대로 나두고 기능을 추가할 때 주로 쓰인다.

 

 

 

 

모든 내용은 점프투파이썬을 참고로 복습용으로 작성.

반응형