토요일, 오늘도 파이썬 기초과목을 수강하기 위해 강의에 참석하였습니다.




========================================  1  ========================================


[ 09 : 02 ~ 09 : 47 ] 



 각종 객체지향 언어에 무엇이 있는지 질문을 하시면서 객체지향 언어의 특징을 간단히 언급하셨고, 그 특징 중 파이썬은 기본자료형을 제외하는 모든 것을 객체로 다룬다는 이야기를 하셨습니다.


클레스의 선언과 상속에 대해 설명을 해 주셨습니다.


파이썬에서 클래스 생성 시 소괄호를 쓰나 안쓰나 크게 상관이 없으며, 쓰는경우는 소괄호를 붙여쓰고, 그 안에 상속받을 클레스를 넣어줄 수 있습니다. 만약 상속받을 클레스를 지정하지 않을 경우 Object클래스를 상속받습니다. 


모든 객체의 메서드는 self(셀프)라는 인자로 입력을 받습니다.


파이썬에서 기본으로 제공되는 함수에 __(언더바 두개)를 양쪽에 붙이는 함수를 메직메서드, 또는 스페셜메서드 라고 부른답니다. 사용자 임의로 메직메서드를 만들 수 없습니다. _ _ 를 쓰면 또 변수를 특별하게 만들 수 있다고 하셨습니다. 


 자바에서의 퍼블릭 변수를 선언하기를 비권장하는 이유는 의도치 않게 값이 변경되는 경우가 있기 때문입니다. 하지만 파이썬은 변수의 선언 시 변수의 접근범위를 지정할 수 없다고 하셨습니다. __s와 같이 변수의 이름을 붙이면 메모리에서 가려주는 변수로 되어 개체 밖에서 값이 직접 참조가 되지 않습니다. 


파이썬에서 프라이빗으로 변수를 선언하는 방법은 _ _를 쓰는것이라고 하셨습니다. 클레스에 dir함수를 사용하여 확인할 수 있었습니다. 우선 그 함수의 결과를 가장 끝에서 보면 _(클레스이름)__(변수이름) 으로 하나의 값이 보입니다.






========================================  2  ========================================


[ 10 : 00 ~ 10 : 50 ] 


파이썬에서는 변수에 상태, 접근권한등을 지정하는 키워드는 없습니다.

self인자를 받으면 객체함수가 됩니다. 정적 메서드의 선언은 특별한 함수를 활용합니다.

정적메서드와 클래스 메서드의 차이와 선언하는 방법에 대해서 설명을 해 주셨습니다. 강의자료 36페이지에도 간단하지만 이해할 수 있을정도로 설명이 잘 되어있습니다. 

 파이썬은 문법적으로 ?, $ 를 사용하지 않습니다.


 class상속 

 어떤 class의 기능을 확장하기 위해서 사용을 한다고 하셨습니다. Class는 Class만 상속받습니다. 파이썬의 클래스는 1개이상의 클래스를 상속받습니다. 명시를 하지 않아도  Object Class를 상속받습니다. 
 동일한 메서드의 호출은 상속받은 순서대로 탐색을 합니다. 먼저 상속받은 Class부터 탐색하므로 중료한 Class부터 상속을 받도록 합니다.
 





========================================  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 키워드를 사용할 때 수행될 기능이 정의된 함수로, 객체에 해당 기능이 필요하다면 정의가 가능합니다.


읽기쉽고 사용하기 쉬운 객체를 만들기 위해 매직메서드를 재 정의 하는것이라고 하셨습니다. 

+ Recent posts