-
[Python] 다중 상속, MRO
Python에선 다중으로 상속이 가능하다. 그래서 대표적인 상속 예시가 다이아몬드 상속이다. Base.__init__ A.__init__ Base.__init__ B.__init__ C.__init__ 위 코드는 Base라는 최상위 class가 두 번 호출된다. C++의 경우엔 virtual이라는 것을 통해 하나라는 것을 알 수 있지만…
-
[Python] Proxy Design Pattern
42 A.spam None Should be 37: 37 Should be 37: 37 위 코드는 객체 a를 Proxy()에 넣으면 객체 p에 접근하면 마치 a에 접근하는 것처럼 하는 proxy design pattern 이다. 위 코드에서 print(p.x) 가…
-
[Python] Override
Class에서 부모 class와 자식 class의 function 이름이 같을 경우 자식 class’s function을 call 할 때 부모 class function이 가려지고 자식 class function이 호출된다. B.spam A.spam Constructor 또한 일반 함수처럼 override 된다. B.__init__() 1…
-
[Python] Property
Python에선 C++과 Java처럼 접근지정자가 존재하지 않는다. Guido Dave Expected a string 위 코드를 보면 decorator로 property() 함수가 사용되고 있다. 실제 property() wrapper 함수를 통해서 접근 지정을 위한 기능을 추가할 수 있다. 실제 property를…
-
[Python] Special Function
Python은 class 구조로 대부분 이뤄져있으며, 각 class는 __init__ 과 같은 special function으로 구성된다. Pair(3, 4) __init__() __init__: 기존 class의 constructor 역할을 한다. __repr__() __repr__: class의 객체를 출력했을 때 호출되는 함수이다. 위 코드에서 'Pair({0.x!r},…
-
[Python] Coroutine
기존에 generator에서 yield 키워드를 lvalue로 사용해 제어권을 넘겨줬지만, coroutine은 rvalue로 사용하여 특정 변수에 값을 전달 할 수 있다. 참고로 Coroutine은 generator의 일종이다. Ready to receiveGot 1Got 2Got Hello Coroutine은 decorator를 통해 사용하기 유용하다.…
-
[Python] zip, zip_longest
zip Python에서 여러가지 컨테이너를 순회하고 싶을 때 사용하는 함수다. Example 1 101 5 78 4 37 2 15 10 62 7 99 (1, ‘w’) (2, ‘x’) (3, ‘y’) 위 코드는 만약 각 컨테이너의…
-
[Python] dropwhile
Python에선 특정 조건의 문자를 제외하고 추출할 수 있도록 돕는 method가 존재하는데 이게 dropwhile 이다. Definition dropwhile([Condition], [Input]) Condition이 true면 pass하고, false 일 때 해당 element를 출력한다. Example [13, 14, 22, 23, 44]
-
[Python] Generator
yield 라는 키워드가 사용되는 것을 generator라고 부른다. 아래 예시 코드를 통해 이해할 수 있다. 0 0.5 1.0 1.5 2.0 2.5 3.0 3.5 위 코드는 특정 시작 값부터 종료 값까지 일정 증가값 간격으로 출력하는…
-
[Python] Iterator
C++에선 iterator라는 STL library가 존재하며, python에선 iterator라는 객체가 존재한다. hello world It’s nice 위 예제는 특정 파일에 text를 읽어들이는 코드다. passwd 라는 파일을 읽어서 StopIteration 예외가 발생할 때까지 계속 수행한다. 123————————————————————————————————- StopIteration Traceback…