파이썬 - 클래스
1-1 클래스
- 비슷한 속성을 가진 객체를 묶는 큰 틀
예를 들어서
위 함수는 num을 인자로 받아서 전역 변수 result에 입력받은 num의 값을 저장하고 result를 return 하는 함수이다.
이처럼 간단하게 계산기 한 개 정도는 가능하지만
이런식으로 계산기가 2개 또는 3개 여러개 이상 필요하다면 코드가 난잡해질것이다.
뽑기를 예로 설명해 보자면
뽑기의 틀 = 클래스
뽑기 모양 = 인스턴스
ex) 하트모양 = 하트모양 인스턴스, 별 모양 = 별 모양 인스턴스
여기서 인스턴스는 객체와 같은 말이고 클래스에 의해서 생성된 객체를 = 인스턴스 라고 부른다.
1-1-1 클래스 변수
이어서 예를 들자면 Servie라는 회사가 있는데 이 회사에 가입해야만 정보를 알 수 있다.
그 정보는 "영구는 배꼽이 두 개다"라는 정보이고 이 정보를 보기위해 가입하는 방법은
pey라는 인스턴스(객체)는 Service에 가입했고 Servie의 정보를 볼 수 있을것이다. 정보는 보는 방법은
해서 pey는 Service의 정보인 secret를 볼 수 있을 것이다.
1-1-2 클래스 함수
Service는 추가적인 기능을 만들기 위해서 더하기 숫자를 넣으면 더 해주는 서비스를 만들었다
사용방법은 . 을 이용해서 sum 서비를 이용하겠다! 라고 하면되는대
1-1-3 self
self는 이 사람이 진짜 회원인지 판단하는 것이다.
따라서 인자 값이 3개 이기 때문에
이렇게 사용해야한다 이걸 해석하자면 pey라는 사람이 service 중 sum 기능을 사용하겠다! 라는 뜻인대
pey.sum(1,1)이라고 쓸 수 있었던 이유는 self는 호출 시 이용했던 인스턴스로 바뀌게 되기때문에 생략이 가능하다.
.setname은 가입자(인스턴스)에 이름을 입력받고 저장하는 함수이다.
그럼 setname 함수는 pey라는 가입자(인스턴스)는 이름을 Dorahee로 설정하려고 하는구나 라고 생각한다.
즉 self.name = name 은 pay.name= name 으로 해석 할 수 있다.
1-1-4 __init__
- 인스턴스를 만들 때 항상 실행
위 소스코드처럼 로직을 구성은 않좋은 방식이다.
setname 같은 함수는 인스턴스 실행시 바로 시작할 수 있게 끔 해주는것이 좋은대
그게 바로 __init__이다
위 와 같이 인스턴스를 생성 할 때 __init__에 들어가는 name에 인자변수를 넘겨주면
init 는 무조건 실행하기 때문에 위 로직과 아래 로직이 결과 값이 똑같은걸 확인 할 수있다.
자바에서 생성자와 같은 개념이라고 생각하면 될 것같다.