소개

mandoo_wage_program.py

클래스는 간단하게 자료형태 : integer, float, string, list

인스턴스는 값 : 1,2,3   0.1, 3.14,   'Hello world',  [1, 2, 3]
image

이전에 파이썬 프롬프트에서는 아래와 같이 자료형을 확인할 때, 클래스를 명시해줬었다.
image


나만의 자료형태도, 클래스로 정의할 수 있다.

새로운 자료형태의 클래스

mandoo_wage_program.py

  • 엑셀로 자료형태를 정의해본다고 가정하자.
    - 아래에서, 가로 한줄한줄이 나의 자료형태가 된다. 즉, 새로운 클래스가 된다.
    - 이러한 자료형태의 변수로 선언할 수 있다.
    image

  • 파이썬에서, 4가지 정보를 가지는 클래스를 만들어보자.
    - 변수명, 함수명과 다르게  클래스명은 첫글자를 대문자로 쓴다.
    - 인자가 없을 떄는 ()없이 그냥 클래스명: 으로 끝낸다.
    - 만약 값을 비워두고 싶다면 None을 대입한다
  • 생성한 클래스의 인스턴스는     인스턴스변수 = 클래스()   형태로 생성한다.
    (java의 경우,   클래스명 인스턴스 변수 = new 클래스명()으로 생성)
  • 클래스안에 정의한 필드들(name, wage_per_hour ... )에 접근하기 위해서는
    인스턴스.필드명으로 접근하면 된다.
  • 만약 각 필드들에 새로운 값을 입력하지 않았다면, 클래스에서 넣어준 최초값이 출력된다.
    image

  • 다른 인스턴스를 생성하더라도, e000과는 개별된 e001이 생성된다.
    image
    image


  • 근무시간을 추가해보자.
    - 엑셀에서는 함수식을 쓸 수 있다.
    - 파이참의 함수식을 클래스에도 넣을 수 있다.
    image


  • 클래스안에서 def 함수식을 정의할 때, 인자의 괄호를 열면, self가 자동으로 입력된다.
    일반 함수식과 다르게, 클래스안의 함수에서는 self라는 인자가 반드시 들어가야한다.
  • 클래스안의 필드클래스속 함수에서 사용할 때는, self.필드명으로 접근한다.
  • 이제 인스턴스에서 클래스안의 함수를 사용할 때에는, 필드와 동일하게 접근하며, ()인자식이 붙는것만 차이가 난다
    그리고 self라는 인자는 안적어준다.
    image


클래스안에는 필드(변수) 뿐만 아니라 함수도 넣어놓을 수 있다.!


클래스안에 함수에서  self다른함수를 호출할 수도 있다.


  • 엑셀에서 일당 칼럼을 추가한다고 해보자. 함수를 이용해서 구한 근무시간에 시급을 곱하면 된다.
    image

  • 파이썬에서도 할 수 있다.
    클래스안에 일당을 구하는 함수를 만들어보자.
    - 일당을 구하려면 앞에서 클래스에 정의한 함수()를 사용해야한다.
    클래스안에서 함수를 정의할 때, 인자로 반드시 self를 붙혔다.
      클래스안의 함수에서 클래스안의 필드를 이용할 때, self를 붙혔다.
    클래스안의 함수에서 클래스안의 함수를 이용할 때도, self를 붙힌다.
    - 정의한 일당구하는 함수식을 print로 찍어주자.
    image

이제 각각이 제대로 출력되는 것을 확인 했으니

하나도 묶어서 {} /t .format을 이용하여 한줄로 출력해보자.

  • 출력하고 싶은 요소는 6개 이다.
    image
    image



조재성, 추미애, ... 사람마다 각각

  1. 인스턴스 생성
  2. 클래스 필드마다 값 대입
  3. 출력

하기가 쉽지가 않다.  리스트를 사용할 수도 있으나... 클래스를 사용하므로

그래서 인스턴스를 생성함과 동시에, 필드에 값을 넣을 수 있는

클래스의 생성자를 도입할 것이다.

  1. 생성자를 정의할 때는, 기본형식이 정해져있다.
    - def __init__(self):   로서, 언더바2개가 init 양쪽으로 있다.
  2. 이제 생성자의 필수인자인 self, 옆에다가 추가로 받을수 있는 인자명을 필드명과 동일하게 적어준다.
    *이 때, 시급은 상수라서 안받는다.
  3. 마지막으로,  인자로 들어온 값(name)을 ----> 클래스의 필드인 self.필드 에 대입해주는 식을 작성한다.
    image

  • 이제 인스턴스 생성시, 클래스()의 인자로, 값을 대입해 줄 수 있다.
    image


이제 인스턴스 생성한 것을 변수에 대입하지말고, 리스트에 담아 관리해보자.

  1. 빈 리스트를 만들고
    *리스트는 = []로 생성 or  = list()로 생성 둘다 가능하다.
  2. 각 인스턴스를 append를 통해 리스트에 추가하자.
  3. for문을 통해 리스트에 있는 것을 다 출력하도록 하자.
    * 여러개의 리스트가 있어서, 각각 순서대로 접근할 때는 range(0, len())을 썼지만, 여기서는 리스트 1개로 관리-> 리스트를 이용한 for문
    image


print대신 -> csv으로 파일 쓰기까지 해보자.

(프로그래밍 print개념 -> 파일 입출력으로 생각하자. txt는 utf-8코딩 / csv는 안코딩)

  • 마찬가지로 for문 돌기전에 open() / for문안에서 write (  ) 에 줄바꿈해주기 / for문 끝나고 close() )
  • 우리는 각 value를 \t를 이용해 구분했으나 --> csv는 comma로 구분해주기
    image
    image

  • 첫번째 칼럼명도 작성해준다... \n도 까먹으면 안된다.
    image
    image




+ Recent posts