클래스

클래스란 '데이터의 설계도'를 의미한다. 이 설계도에는 데이터가 어떤 특징의 파라미터를 갖는지, 그리고 어떤 기능을 갖고 있는지에 관해 쓰여있다.

 메소드는 일련의 처리를 준비해 놓고 사용하고 싶을 때 편리하게 호출할 수 있게 하기 위해 존재하는 것인데 클래스는 이것보다 좀더 큰 개념이다. 클래스도 마찬가지 이지만 클래스 안에는 변수와 함수가 함께 들어간다.

클래스를 사용하면 좋은점

- 프로그램의 규모가 커졌을 때 의미 있는 집합체 단위로 프로그램을 정리할 수있다.

- 설계도라고 부른 것과 관련 있는데, 설계도가 있다면 양산이 가능하다.

클래스를 만드려면

설계도는 프로그램을 만드는 방법이 적힌 도면이다. 프로그램을 사용하기 위해서는 먼저, 설계도를 따라 제품을 만들어야 한다. 프로그램의 세계에서 설계도에 따라 제작한 실제 제품을 인스턴스(instance)라고 한다. 그리고 인스턴스를 만드는 것을 인스턴스화 라고한다.

클래스의 서식

class 클래스 이름:
    변수의 정의
    함수의 정의

객체

객체란, 한마디로 말하자면 데이터와 메소드가 묶인 것이다. 즉 객체는 메모리에  존재하는 개별 데이터를 가르키는 개념이다.

-객체는 데이터와 기능(메소드)를 가진다.

-데이터형도 데이터와 메소드를 가지므로 객체다.

-클래스는 데이터와 메소드에 대한 설계도이고, 설계도(클래스)로 제품을 제작하면 객체가 된다.

메소드의 인자 self

클래스안에 메소드를 정의할 떄는 일반 함수를 정의할 떄와 다르게 메소드의 첫 번째 인자로 self라는 키워드를 써야한다. 이유는 같은 클래스 안에 정의했어도 메소드 안에서 메소드 밖에 있는 변수를 바로 사용할 수 없기 때문이다. self를 사용하지 않는다면 에러가 뜨는데 에러 내용은 '정의되어 있지 않다'이다. 이는 참조할 수 있는 범위에 정의되어 있지 않다는 뜻이다.

class man:
    def salary(self): // 셀프를 적지 않을 경우 참조오류가 난다.
        retrun "십만원"
        
kim = man()
kim.salary()

//실행결과
'십만원'

하지만 굳이 self가 아닌 다른 문자를 적어 넣어도 되지만 관행적으로 self로 적는다. 이유는 코드를 적은 본인 이외의 다른 사람이 프로그램을 읽거나 나중에 다시 읽을때 혼란스럽기 때문이다.

 

__init__

클래스는 설꺠도고 그 설계도를 바탕으로 인스턴스를 만든다라고 했는데 그런 제품을 만들 때 초기값을 설정하는것이 __init__이다. 서식은 이렇다

class 클래스 이름 :
    def__init__(self, 인자, ...):
        self. 초기 설정하고 싶은 변수 = 인자
        초기 수행 처리
    def 메소드 이름:
    	메소드 처리

위 man 클래스에 __init__을 더하면

class man:
    def __init__(self, bouns):
    	self.bouns = bouns
    def salary(self): // 셀프를 적지 않을 경우 참조오류가 난다.
        salary = 10000 + self.bouns
        retrun salary
        
kim = man(5000)
kim.salary()

//실행결과
15000

이처럼 인스턴스화 할때 초깃값을 전달할 수 있으면 클래스를 더 편하게 사용할 수 있다. 

'프로그래밍 공부 > Python' 카테고리의 다른 글

[Python] 4. 파이썬의 기본(4)  (0) 2020.01.18
[Python] 3. 파이썬의 기본(3)  (0) 2020.01.14
[Python] 2. 파이썬의 기본(2)  (0) 2020.01.12
[Python] 1. 파이썬의 기본(1)  (0) 2020.01.09

+ Recent posts