나 개발자 진짜 되냐?

5일차 파이썬 프로그래밍의 날개_클래스편1 본문

파이썬을 시작했어요!

5일차 파이썬 프로그래밍의 날개_클래스편1

Snow Rabbit 2022. 12. 16. 19:26

 

어제와 그제를 바탕으로

기본적인 틀을 배웠다면

이제 추가적인 살을 조금씩 붙여보려고 한다.

아마 오늘내일 쓰면 뭔가 이 개념도 다 정리되는 거 같기도 하다

정리만 하고......

머리에는 정리가 되었을까?.. 아닌 거 같다..ㅎㅋㅋ

자주 봐야겠다는 생각이 드는 지금이다

 

아! 오늘 오구 이모티콘을 샀다

오늘 나온 거 바로 샀다.. 흐흐

귀여우니 오늘 페이지는 이걸로! (¬‿¬)

 

클래스에 대해 오늘은 알아보자!

 

클래스, 너는 누구냐!

 

또 쉬운 예시를 가져와봤다.

클래스는 계속 만들어 낼 수 있고

클래스에서 만들어지는 것들을 객체라고 한다.

 

이런 객체들에게는 중요한 특징이 있다는데,

이런 객체들은 고유한 성격을 가진다는 것이다.

 

즉!

틀은 하나지만 각자 특징이 있다는 것이다.

 

특징이 다르다고

틀이 이상한 것도 아니고,

빨간 과자가 깨졌다고 노란 과자에게 영향을 주지도 않는다.

 

클래스는 이렇게 사용한다

class Cookie:

    pass

이 클래스는 아무 기능도 안 가지고 있다.

하지만 클래스는 클래스이기 때문에 객체를 만들 수 있다.

과자 틀로 과자를 만들듯이 말이다.

 

a = Cookie()

b = Cookie() 

 

클래스는 하나지만 객체는 무수하게 만들 수 있다.

그게 과자 틀의 특징이니깐 ㅎ

 

객체와 인스턴스에 차이점이 나와있다.

그냥 스으으윽 읽어보자!

 


좋은 예시는 직접 만들어보는 것!

사칙연산 클래스를 만들어보겠습니다.

 

일단 대왕 틀을 만들어야겠지요.

 

class Fourule :    pass

 

1. class를 만들 땐 무조건 맨 앞은 대문자!

2. pass는 아무것도 수행하지 않을 때 임시로 적어두는 코드

 

아무것도 안 만들었다고 객체가 안 만들어지는 것은 아니라는 점!

 

자 대왕 틀에 이제 사칙연산을 할 수 있는 연산을 넣어줘야 하는데

 

연산 전에 두 숫자를 가져와야 할 것 아닌가..

 

class Fourule :

    def setdata(self, fir, sec) :

        self.first = fir

        self.second = sec

 

이렇게 첫 번째와 두 번째 친구를 데려왔다.

 

의문점이 두 개 생길 것이다.

 

def함수의 setdata에 3개를 표시했는데 왜 두 개만 쓸까?

못 보던 친구 self는 누굴까?

 

하나씩 알아보자

 

클래스 내에 들어가 있는 def는 '함수'라고 부르지 않고

'메서드' 라는 새로운 호칭을 사용한다.

이유는.. 그냥 과자 틀 마음이다..킼킼키

 

객체를 통해 클래스의 메서드를 호출하기 위해서는

 

a.setdata(2,8)       

이렇게 함수 호출하듯이 써줘야 한다.

아니지.. 어차피 함수니깐 함수랑 호출이 같다고 보면 되겠네..... 요..^^

 

왜 두 개만 쓸까?

 

그 이유는

setdata메서드의 첫 번째 매개변수 self에는

setdata메서드를 호출한 객체 a가 자동으로 전달되기 때문이다.

 

간단하게 이야기하면 

이 a가 자동으로 self로 간다는 뜻이 된다.

 

파이썬 메서드의 첫번째 매개변수 이름은

관례적으로 self를 사용한다고 한다. 굳이 self를 안 써도 된다지만..

.. 뭐 난 self 쓸란디

 

 

자 그러면 다시 돌아와서

 

 

setdata메서드를 다시 보자!!

 

def setdata(self, fir, sec) :

    self.first = fir

    self.second = sec

 

여기에 우리는 2와 8을 넣었으니

 

self.first = 2

self.second = 8이 될 것이다.

그리고 또한 self는 객체 a가 들어간다고 했으니

 

a.first = 2

a.second = 8이 된다.

위 문장은

a객체에 객체 변수 first가 생성되고 2라는 값이 저장된다.라는 뜻을 가지고 있다.

 

객체에서 생성되는 객체만의 변수를

우리는 객체 변수라고 부른다.

 

아까 위에서 빨간 과자가 깨져도 노란과자한텐 영향이 없다는 말을 적어놨었다!

객체 두 개를 적어본다.

a = Fourule()

b = Fourule()

 

a.setdata(2,8)

print(a.first)      →      2

 

b.setdata(22, 88)

print(b.first)      →      22

 

이렇듯 a객체에 first 값과 b값의 first값이 서로 영향을 받지 않고
각자의 값을 유지하고 있다.

빨간 과자가 깨져도 노란과자한텐 영향이 없다!

 

1. 더하기 기능 만들기

 

중간점검으로, 아까 클래스를 가져와보자

 

class Fourule :

    def setdata (self, fir, sec ) :

        self.first = fir

        self.second = sec

 

이다음에 add 함수를 추가해 보자

 

    def add(self)

        result = self.first + self.second

        return result

 

add에 self를 써주는 이유는

우리가 이따가 print 할 때 함수 형태이기 때문에

().add라고 써야 하는데

그때 앞에 있는 객체를 위해서 self를 써줘야 한다.

 

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

 

더하기랑 같기 때문에 하나로 묶었다.

한번 볼까?!

 

class Fourule :

    def setdata (self, fir, sec)

        self.first = fir

        self.second = sec

 

    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) :

        resutl = self.first / self.second

        return result

 

짜잔! 완성!!

 

2편도 써야겠다....좀 기네.. 호호