Chapter 03

Part 01

  • 매직메소드: 개인의 목적에 맞게 구현된 메소드를 지칭
  • 클래스 안에 정의할 수 있는 특별한(built-in) 메소드
  • 파이썬의 핵심: 시퀀스(sequence), 반복(iterator), 함수(function), 클래스(class)
  • 공부한 날짜: 2021.11.15

 

  • n=100 \n print(type(n) : 변수 하나도 클래스이다

 

  • 클래스 예제 #1

Fruit class 구현

 

  • 인스턴스 생성 및 출력 

 

  • 첫번째 인스턴스가 self로 들어가고, 두번째거가 파라미터 x로 들어감

- print(s1._price + s2._price) 이렇게 길게 쓰지 않아도 연산하가능하게 하는 매직메소드. 아주 유용하다!

 

Part 02 

  • Vector Class 구현 

 

- object는 굳이 안 써도 됨

-*arg 사용

-예외처리 꼭 해주기!!

 

  • Vector 인스턴스 생성

 

  • 매직 메소드: 개인의 목적에 맞게 구현된 메소드 (정의 여러번 반복하기)
  • 메소드 주석 정보 불러오기(__doc__)

 

  • 연산 

 

Part 03

  • 두 점 사이의 거리 구하는 공식 구현

 

  • 네임드 튜플

 

  • 네임드 튜플 이용해서 두 점 사이의 거리 구하기 

 

  • 네임드 튜플 선언 방법 
  • 네임드 튜플 : 데이터 모델에서 알아야할 개념, 인덱스/ 키로 접근 가능하다. 클래스 객체 상태로 래핑된다 
  1. 리스트로 선언
  2. 컴마로 선언(사용하는 사람 꽤 많음. 3번으로 하면 실수할 가능성 있음)
  3. 띄어쓰기로 선언
  4. class, rename 으로 선언(좀 더 찾아보기)

 

 

  • 객체 생성
  • 객체: 파이썬의 데이터를 추상화
  • 모든 객체 -> id, type ->value

'Dev Language > Python' 카테고리의 다른 글

[파이썬 중급] #3_2 시퀀스  (0) 2021.11.16
[파이썬 중급] #3_1 시퀀스  (0) 2021.11.16
[파이썬 중급] #1 클래스& 메소드 심화  (0) 2021.11.15
[파이썬 기초] #5  (0) 2021.11.15
[파이썬 기초] #4  (0) 2021.11.15

Chapter02. 클래스 & 메소드 심화(part01~03)

 

  • 객체지향 프로그래밍의 장점: 코드의 재사용, 유지보수, 코드 중복 최소화, 대형프로젝트에 적합
  • 공부날짜: 2021.11.14

Part 01

  • 일반적인 코딩: 일일이 다 입력해야함 

 

  • 리스트 구조 : 관리하기가 불편하고, 인덱스 접근 시 실수 가능성이 있고 인덱스를 알아야하므로 삭제가 불편하다

 

  • 딕셔너리 구조는 코드 반복 지속, 중첩문제(키), 키 조회 예외 처리 등에 사용할 수 있다 

 

  • 클래스 구조:  구조 설계 후 재사용성 증가, 코드 반복 최소화, 메소드를 활용하는 특징이 있다

 

 

Part 02

  • 인스턴스의 네임스페이스에 없으면 상위에서 검색
  • 동일한 이름으로 변수 생성 가능(인스턴스 검색 후 상위(클래스/부모클래스 변수 )로 이동
  • Car class 구현

- 클래스 변수는 모든 인스턴스가 공유한다(중요!!)

-self의 의미: 인스턴스의 고유한 정보를 저장하기 위해 self를 입력한다 

- 클래스 주석, 메소드 주석확인(__doc__())

- __init__을 부를 때마다 Car 클래스의 클래스 변수 car_count가 1씩 늘어난다는 얘기(?)

 

  • 인스턴스 생성 

  • 각 인스턴스 ID 확인 

 

  • 다른 인스턴스이므로 아이디 값이 다르다는 걸 확인

 

  • dir(instance): 인스턴스 속성들 보여줌. 속성의 값은 보여주지 않음
  • __dict__: 딕셔너리 형태로 키, 값 보여줌
  • __doc__: 주석 보여줌(클래스나 메소드)

 

  • 같은 클래스에서 만들어진 인스턴스의 클래스 값은 동일하다(당연)

  • 출력(클래스 이름, ID 동일)

  • 클래스 변수는 인스턴스로 부터 불러오나 클래스로 부터 불러오나 동일하다 

 

Part 03

  • Car Class 구현

  • Class Method 구현

- 인스턴스는 self, 클래스는 cls를 받는다

- cls.price_per_raise=per : 클래스 변수 price_per_raise에 입력된 파라미터 값. per를 대입한다

 

  • Static Method 구현

 

- 클래스와 관련이 있는 기능을 수행하는 역할이 필요하고, self,cls 안 받아도 될때 static method 이용

 

  • 인스턴스 생성

 

  • 인스턴스 정보(id, detail info)확인하기 

 

  • 가격 정보 출력(직접적인 방법/ 리스트로 불러오기)

- 직접적인 방법(첫번째)는 좋은 방법이 아님 되도록이면 두번째이용

 

  • 클래스 미사용/사용 해서 가격 변동 구하기 

1. 인상전 가격 출력 

2. 적용

왼쪽은 인상률이 바뀔때마다 새로 입력해줘야 하지만, 오른쪽 방법은  파라미터값만 변경하면 바로 계산할 수 있기 때문에 더 좋은 방법이다 

 

 

-끝-

'Dev Language > Python' 카테고리의 다른 글

[파이썬 중급] #3_1 시퀀스  (0) 2021.11.16
[파이썬 중급] #2 매직 메소드(스페셜 메소드)  (0) 2021.11.15
[파이썬 기초] #5  (0) 2021.11.15
[파이썬 기초] #4  (0) 2021.11.15
[파이썬 기초] #3  (0) 2021.11.15

공부한 날짜: 2021.10.2n

기록한 날짜: 2021.11.20 

 

  • 파이썬 내장 함수
  • 자주 사용하는 함수 위주로 실습/ 사용하다보면 자연스럽게 숙달 

 

  • all,any : iterable 요소 검사 (참, 거짓)

 

  • enumerate: 인덱스 + iterable 객체 생성!!

- for i, name in ['abc','bcd','deg'] \n print(i,name)이면 오류남. enumerate 이용하기 

 

 

  • filter : 반복 가능한 객체 요소를 지정한 함수 조건에 맞는 값 추출!!
  • 두가지 방식 모두 같은 결과값 출력 

 

  • map: 반복가능한 객체 요소를 지정한 함수 실행 후 추출 
  • 표현 방법 두가지 

 

  • round() : 반올림

 

  • sorted : 반복가능한 객체(Iterable)를 정렬 후 반환
  • 반복 가능한 객체: list, dictionary, tuple,set 무조건 외우기 

 

  • zip: iterable의 요소를 묶어서 반환/ zip함수는 tuple로 짝을 만들어서 반환 

 

 

외장함수

 

  • 예제1 

  • 예제2

  • 예제3

  • 예제4: open(), dump(), 'wb'

  • 예제5 : load()

 

  • 예제6 : os -> 환경 변수, 디렉토리(파일), 처리 관련, 운영체제 작업 관련

-mkdir, rmdir(비어있으면 삭제) , rename

 

  • 예제7 : getcwd() -> 현재경로

 

  • 예제8~11 : 시간 관련 함수 

 

  • 예제 12 : time.sleep()

 

  • 예제 13: random.random()/randint()/randarange()/shuffle()/choice()

 

  • webbrowser

 

파일 읽기  및  쓰기 

- r: 읽기 모드 / w: 쓰기 모드 / a : 추가모드 / t : 텍스트 모드 / b: 바이너리 모드 

- 상대 경로('../, ./'), 절대경로('users/hello/desktop...')

 

  • 예제1

 

  • 예제2

 

  • 예제3
 

 

  • 예제4

 

  • 예제5

 

  • write 예제

 

  • 예제1

 

  • 예제2

 

  • 예제3

 

  • 예제4

 

  • 예제5

'Dev Language > Python' 카테고리의 다른 글

[파이썬 중급] #2 매직 메소드(스페셜 메소드)  (0) 2021.11.15
[파이썬 중급] #1 클래스& 메소드 심화  (0) 2021.11.15
[파이썬 기초] #4  (0) 2021.11.15
[파이썬 기초] #3  (0) 2021.11.15
[파이썬 기초] #2  (0) 2021.11.15
  • 공부한 날짜: 2021.10.2n
  • 기록: 2021.11.19

 

  • 시작 전 기본개념
  • 클래스(붕어빵 틀) and 인스턴스(클래스를 가지고 코드에서 사용하는 어떤 객체) 차이 이해
  • 네임스페이스: 객체를 인스턴스화 할 때 저장된 공간
  • 클래스 변수: 직접 접근 가능하고 공유함
  • 인스턴스 변수: 객체마다 별도 존재
  • 예제 #1

-object는 상속 받는다. ()/(object) 다 가능 

-firstdog가 클래스 변수 이므로 클래스, 인스턴스 모두 공유한다 

 

  • 예제2 : self 이해하기 

- 매개변수, self가 없으면 클래스 / self가 있으면 인스턴스 메서드(인스턴스 메서드에 대해 공부 더 해보기)

 

  • f 호출하는 방법 두가지: 인스턴스로 바로 호출 or 클래스-> 메서드 -> 파라미터 순으로 호출 

-func1()은 클래스이므로 파라미터 없이 바로 호출(이게 맞나?)

 

  • 예제3

 

  • 인스턴스 생성, 인스턴스 하나 생길 때마다 stock_num 하나씩 증가 

 

 

  • 예제4

 

  • 인스턴스 생성 

 

-여기서 Info()에는 왜 아무런 파라미터도 안들어 감?? Info(self)로 선언 되어서 그런가. 찾아보기 

 

 

 

들어가기 전 개념 

 

  • Module: 함수, 변수, 클래스 등 파이썬 구성 요소 등을 모아놓은 파일 
  • 파이썬 패키지(폴더)
  • 패키지 작성 및 사용법
  • 파이썬은 패키지로 분할된 개별적인 모듈로 구성된다
  • __init__.py: Python 3.3부터는 없어도 패키지로 인식 -> 단, 하위 호환을 위해 작성 추천
  • 상대경로: ..(부모디렉토리) .(현재 디렉토리) -> 모듈 내부에서만 사용
  • 오픈 소스 등에 쓰일  있으므로 모듈 사용은 중요하다 

 

  • 모듈 불러오는 법 

 

 

파이썬 예외처리의 이해

  • 예외는 반드시 처리해야 한다
  • 로그는 만드시 남긴다
  • 예외는 던져질 수 있다(다른데로 처리를 위임할 수 있다)
  • 어떤 예외는 무시(되도록이면 하지 말기)
  • 예외 없는 것을 가정하고 프로그램 작성 -> 런타임 때 예외 발생 시 예외처리 권장(EAEP)

 

  • 예외 처리 종류
  1. Syntax Error
  1. TypeError
  2. Name Error
  3. IndexError
  4. ValueError

 

1. SyntaxError: 문법 오류

2. NameError : 참조 없음

3. ZeroDivisionError(0으로 나누는 경우)

4. IndexError

5. KeyError

6. AttributeError: 모듈, 클래스에 있는 잘못된 속성 사용 예외

7. ValueError, 시퀀스 자료구조에서 존재하지 않는 참조시 발생

 

8. FileNotFoundError

 

9. TypeError: 자료형에 맞지 않는 연산을 수행 경우 (리트스+튜플, 리스트+str,,,)

 

 

예외처리 기본 

  • try: 에러가 발생 할 가능성이 있는 코드 실행
  • except 에러명1: 여러개 가능
  • except 에러명2:
  • 예시: except Exception as e / except ValueError(Exception)
  • else: try 블록에 에러가 없을 경우 실행
  • finally: 항상 마지막에 실행 / 예외가 발생해도 한번은 실행
  • raise로 예외 직접 발생

 

'Dev Language > Python' 카테고리의 다른 글

[파이썬 중급] #1 클래스& 메소드 심화  (0) 2021.11.15
[파이썬 기초] #5  (0) 2021.11.15
[파이썬 기초] #3  (0) 2021.11.15
[파이썬 기초] #2  (0) 2021.11.15
[파이썬 기초] #1  (0) 2021.11.15

+ Recent posts