토요일, 오늘도 파이썬 기초과목을 수강하기 위해 강의에 참석하였습니다.
======================================== 1 ========================================
[ 09 : 02 ~ 09 : 47 ]
각종 객체지향 언어에 무엇이 있는지 질문을 하시면서 객체지향 언어의 특징을 간단히 언급하셨고, 그 특징 중 파이썬은 기본자료형을 제외하는 모든 것을 객체로 다룬다는 이야기를 하셨습니다.
클레스의 선언과 상속에 대해 설명을 해 주셨습니다.
파이썬에서 클래스 생성 시 소괄호를 쓰나 안쓰나 크게 상관이 없으며, 쓰는경우는 소괄호를 붙여쓰고, 그 안에 상속받을 클레스를 넣어줄 수 있습니다. 만약 상속받을 클레스를 지정하지 않을 경우 Object클래스를 상속받습니다.
모든 객체의 메서드는 self(셀프)라는 인자로 입력을 받습니다.
파이썬에서 기본으로 제공되는 함수에 __(언더바 두개)를 양쪽에 붙이는 함수를 메직메서드, 또는 스페셜메서드 라고 부른답니다. 사용자 임의로 메직메서드를 만들 수 없습니다. _ _ 를 쓰면 또 변수를 특별하게 만들 수 있다고 하셨습니다.
자바에서의 퍼블릭 변수를 선언하기를 비권장하는 이유는 의도치 않게 값이 변경되는 경우가 있기 때문입니다. 하지만 파이썬은 변수의 선언 시 변수의 접근범위를 지정할 수 없다고 하셨습니다. __s와 같이 변수의 이름을 붙이면 메모리에서 가려주는 변수로 되어 개체 밖에서 값이 직접 참조가 되지 않습니다.
파이썬에서 프라이빗으로 변수를 선언하는 방법은 _ _를 쓰는것이라고 하셨습니다. 클레스에 dir함수를 사용하여 확인할 수 있었습니다. 우선 그 함수의 결과를 가장 끝에서 보면 _(클레스이름)__(변수이름) 으로 하나의 값이 보입니다.
======================================== 2 ========================================
[ 10 : 00 ~ 10 : 50 ]
======================================== 3 ========================================
[ 11 : 00 ~ 11 : 51 ]
파이썬에서는 인터페이스라는 개념이 존재하지 않습니다. 자바의 경우에는 클래스는 단일상속, 인터페이스는 다중상속이 가능했습니다.
추상클래스
최근 객체지향에서 뜨는 개념(?)인 믹스인 에 대해서 알아보았습니다. 믹스인은 상속처럼 표현이 되지만 기능만 있는 클래스와 Data가 있는 클래스의 입장에서 볼 때 기능만 있는 클래스의 기능을 추가없이 상속받아서 사용하는 개념으로 이해하였습니다.
매직메서드 (스페셜 메서드)
__repr__(self):자기 자신을 표현하는 함수라고 설명 해 주셨습니다. 파이썬 3에서는 __str__도 이와 같은 기능을 수행합니다. 따라서 __repr__만을 사용할 것을 권장합니다.
__bytes__(self):는 그 객체에 해당하는 바이트값을 출력해줍니다.
__format__(self, format_spec):는 포멧이 호출되었을 때 그 객체가 전달되었다면 그 객체 대신에 표현될 값을 반환하는 함수입니다.
비교연산자 함수
__hash__(self):는 hash값을 반환해주는 함수입니다.
======================================== 4 ========================================
쉬는시간이 조금 짧았지만 지난 시간과 이어서 계속 매직메서드를 확인하였습니다.
[ 11 : 58 ~ 12 : 51 ]
__getattribute__(self, item):는 개체를 가져오고 그 개체가 반환될 값을 반환하는 함수입니다. 객체이름(ex 변수라면 변수명)을 넣으면 객체의 값이 반환될 때 그 반환되는 값을 지정할 수 있습니다.
__dir__(self):는 프로그래머에게 보여주는 정보를 제한하고 싶을 때 사용할 수 있다고 하셨습니다. 즉, 객체에 대한 정보를 임임의로 지정할 수 있습니다.
__getitem__(self, item):을 재정의 하면 배열 식으로 객체에 접근할 때 반환될 값 또는 기능을 정의할 수 있습니다.
__setitem__(self, item):는 배열의 인덱스처럼 접근하여 값을 설정하려고 할 때의 동작을 정의하는 함수로 인덱스로 접근할 때 수행할 작업을 정의할 수 있습니다.
def __iter__(self):
return self
def __next__(self):
return self+1
위와 같이 __iter__(self): 와 __next__(self):는 두개가 모두 정의되어야 하며 반복적인 리스트처럼 객체를 사용할 때 재정ㅇ의 해서 사용하는 함수입니다.
__contains__(self, item):는 in 키워드를 사용할 때 수행될 기능이 정의된 함수로, 객체에 해당 기능이 필요하다면 정의가 가능합니다.
읽기쉽고 사용하기 쉬운 객체를 만들기 위해 매직메서드를 재 정의 하는것이라고 하셨습니다.
'강의노트' 카테고리의 다른 글
[iOS] iOS 프로그래밍 기초 1일차 (0) | 2017.03.27 |
---|---|
[파이썬] 파이썬 기초 2일차 [오후] (0) | 2017.03.11 |
[파이썬] 파이썬 기초 1일차 [오후] (0) | 2017.03.04 |
[파이썬] 파이썬 기초 1일차 [오전] (0) | 2017.03.04 |
[DB] Big Data 플랫폼의 이해5일차 (0) | 2017.02.17 |