본문 바로가기
컴퓨터 사이언스/TIL 정리

[프론트엔드][파이썬] TIL DAY-34 특수 메소드(special method), 파일

by 메리뉴데이 2022. 5. 17.

특수 메소드

파이썬에는 객체에 대해 연산자에 관련한 특수 메소드가 있다.

이들 메소드는 객체에 대하여 +, -, *, / 와 같은 연산을 적용하면 자동으로 호출된다. 

변수 a와 b에 정수가 할당되어 비교연산자(==)로 비교할 때는, 

비교가 가능하여, 같다면?이라는 조건문이 성립하여 

equal이라는 문자열이 출력되게 된다.

 

그러나, 다음의 객체 c1과 c3은 반지름이 10인 동일한 사이즈의 원임에도 비교연산자를 통하여 같은지를 확인해보았지만, 조건문이 성립하지 않다고 판단되어 equal이라는 문자열이 출력되지 않는다.

 

이렇게 객체에 연산을 하고 싶을 때는, 연산자에 관련된 특수 메소드로 연산을 정의하여 주면 사용이 가능하게 된다.

 

그 아래에 클래스 정의를 다시 정의해줄 때,

__eq__() 메소드를 통해 비교 연산자를 정의하여 주었는데,

객체 자신의 반지름과 다른 객체의 반지름의 값이 같다면,

비교연산자를 적용시 동일한 것으로 출력하도록 한 것이다.

그렇게 정의한 뒤 다시 c1 객체와 c3 객체를 비교연산자로 동일한지를 물으니, 동일하다고 판단(True)하여  equal 문자열을 출력하는 것을 볼 수 있다.

 

 

 

 

 

<위 파일 실행 화면>

 

연산자와 관련된 특수 메소드

연산자 메소드 설명
x + y __add__(self, y) 덧셈        cf)__radd__(self, y), __iadd__(self, y)
x - y __sub__(self, y) 뺄셈        cf)__rsub__(self, y), __isub__(self, y)
x * y __mul__(self, y) 곱셈        cf)__rmul__(self, y), __imul__(self, y)
x / y __truediv__(self, y) 실수 나눗셈    cf)__rtruediv__(self, y), __itruediv__(self, y)
x // y __floordiv__(self, y) 정수 나눗셈    cf)__rfloordiv__(self, y), __ifloordiv__(self, y)
x % y __mod__(self, y) 나머지        cf)__rmod__(self, y), __imod__(self, y)
divmod(x, y) __divmod__(self, y) 실수 나눗셈과 나머지   
cf)__rdivmod__(self, y), __idivmod__(self, y)
x ** y __pow__(self, y) 지수         cf)__rpow__(self, y), __ipow__(self, y)
x << y __lshift__(self, y) 왼쪽 비트 이동    cf)__rlshift__(self, y), __ilshift__(self, y)
x >> y __rshift__(self, y) 오른쪽 비트 이동    cf)__rrshift__(self, y), __irshift__(self, y)
x <= y __le__(self, y) less than or equal(작거나 같다)
x < y __lt__(self, y) less than(작다)
x >= y __ge__(self, y) greater than or equal(크거나 같다)
x > y __gt__(self, y) greater than(크다)
x == y __eq__(self, y) 같다
x != y __ne__(self, y) 같지 않다

 

파일

보조기억장치에서 문서, 소리, 그림, 동영상과 같은 자료를 모아 놓은 것, 보조기억장치 상에서 논리적인 정보 단위

 

파일의 종류

- 텍스트 파일(text file) : 사람들이 읽을 수 있는 텍스트가 들어 있는 파일, 아스키 코드를 이용해 표현된다.

                                             , 연속적인 줄들로 구성

- 이진 파일(binary file) : 사람은 읽을 수 없으나 컴퓨터는 읽을 수 있는 파일

 

파일 안에는 바이트들이 순차적으로 저장되어 있고 맨 끝에는 EOF(End-Of-File) 마커가 있다.

 

파일 읽기

- read() ; 파일에서 전체 텍스트를 읽는다.

                  파일의 모든 문자가 하나의 거대한 문자열로 반환된다.

-readlines() ; 파일 전체를 읽어서 한 줄의 내용이 리스트의 한 항목으로 저장된다. 

- readline() ; 줄바꿈 문자까지(줄 단위로 끊어서) 데이터를 읽어와 반환,

                          파일 전체를 읽고 한 줄의 내용이 리스트의 한 항목으로 저장이 된다.

                          한 번에 한 줄만 읽어서 문자열로 반환

                          반복문을 사용하여 전체 파일을 읽어서 처리

 - read(정수) ; 정수 개의 바이트 수 만큼 데이터를 읽는다.

 

파일 이름 앞에 경로가 붙지 않으면 현재 작업 디렉토리에서 파일을 연다.

 

문자 인코딩

파이썬에서는 기본 문자열이 유니코드이고,  문자열을 특정 코드로 인코딩할 대는 encode() 함수를 사용하면 된다.

유니코드 외의 코드로 인코딩된 문자는 바이트로 표현되고, 인코딩 코드의 종류에 따라 바이트 수가 달라진다.

ex) UTF-8 : (Unicode Transformation Format)한 글자를 8bit(1byte)로 표현하고, 한 문자를 표현할 때 1~4bytes의 가변 길이 인코딩 방식

    UTF-16 : 한 문자를 2bytes 또는 4bytes로 표현하는 가변 길이 인코딩 방식

    ANSI : 

csv

csv reader() 메소드, csv 

맨 첫줄에 헤더 데이터(실제 데이터는 아님)가 들어감

헤더는 next로 실제 데이터에서 뺌

 

 

 

(working on...)