본문 바로가기

Python49

# 1. 스택과 큐 (Stack and Queue) 스택과 큐라고 하면 무엇이 떠오르는가? 지금은.. 나서스의 스택을 안떠올렸으면 좋겠다. (스택의 의미가 아닌것은 아니지만..) 이 포스트를 통해 스택의 개념을 익히면 나서스가 왜 스택을 쌓는다고 표현할지 알것이다. 우선 직관적으로 접근하기 위해서는 그림을 그려보자. 스택과 큐를 유리컵에 비유하자면, 스택은 바닥이 막혀있는 유리컵이고 큐는 바닥이 뚫려있는 유리컵이다. 그리고 우리가 물건을 넣은 모습은 다음과 같다. 둘다 물건을 위에서 집어넣었다고 생각해보자. 그럼 물건을 어떻게 꺼낼까? 스택은 마지막에 넣은 물건을 먼저 꺼내야하고, 큐는 가장 처음에 넣었던 물건을 먼저 꺼낼 수 있다. [정리] 스택은 선입후출(FILO: First In Last Out, 먼저 들어온게 마지막에 나감) 큐는 선입선출(FIFO.. 2021. 12. 2.
# 19. [Magic Method] __call__() 필자는 pytorch를 다루면서 신기한 점이 있었다. 뭐.. 그렇게 대단한건 아닐 수도 있지만, 모델 클래스에 대한 인스턴스를 생성하면 해당 인스턴스를 마치 함수처럼 쓰는 것을... 맨 처음에는 별 다른 생각없이 다른 사람들의 코드를 보고 따라 썼다. 하지만, 쓰면 쓸수록 궁금증이 머리에서 맴돌았다. 어떻게 인스턴스를 함수처럼 사용하는 걸까? 결론은 매직 메소드 (magic method)에 있었다. 파이썬이라는 언어는 진짜 마법처럼 사전에 모든 클래스에 정의된 매직 메소드라는 것이 있다. 언더바(_)가 앞뒤로 붙은 메소드들을 볼 수 있을 것이다. 더군다나 pycharm을 사용한다면 특별히 다르게 색이 빛나는 메소드들을.. 위 스크린샷에서 볼 수 있다시피 predefined 라는 글자가 눈에 밟힌다.. '.. 2021. 11. 19.
# 18. 데코레이터 (Decorator) 이번 포스트는 갑자기 프로퍼티 포스트에 급 어그로가 끌려서 데코레이터가 무엇이냐고 묻는 분들을 위해 간략하게 작성한다. 데코레이터의 사전적인 의미는 장식자이다. 무엇을 장식할까? 바로 함수를 장식한다. 데코레이터 사용법은 대상이 되는 함수 위에 @데코레이터명 을 쓰면 된다. 예를 들면, @staticmethod, @classmethod, @property 등 다양한 데코레이터들이 있고, 사용자가 임의로 데코레이터를 정의할 수도 있다. 데코레이터가 무엇인지 코드로 직접 이해해보자. def say_hi(): print("i'm function") print('hi') def say_hello(): print("i'm function") print('hello') def say_bye(): print("i'm.. 2021. 11. 9.
# 3. [Utils] QCheckBoxUtils from PyQt5.QtCore import Qt from PyQt5.QtWidgets import QWidget from PyQt5.QtWidgets import QHBoxLayout from PyQt5.QtWidgets import QCheckBox class QCheckBoxUtils: @staticmethod def check_box_aligned_center(): widget = QWidget() layout = QHBoxLayout() check_box = QCheckBox() layout.setAlignment(Qt.AlignCenter) layout.addWidget(check_box) widget.setLayout(layout) return widget, check_box @staticm.. 2021. 8. 4.
# 5. 싱글턴 패턴 응용 이번 포스트는 파이썬으로 작성한점 양해 부탁드립니다. 아래의 포스트를 읽고 오는 것을 권장한다. https://dev-ryuon.tistory.com/53 dev-ryuon.tistory.com 필자는 싱글턴 패턴을 사용하면서 한번 생성한 인스턴스를 재사용할 수 있다는 점(메모리 할당 면에서 효율적)과 전역적으로 해당 인스턴스를 사용할 수 있다는 점이 좋았다. 일단 파이썬으로 싱글턴 패턴을 어떻게 구현했는지 확인해보자. class SingletonInstance: __instance = None @classmethod def __getInstance(cls): return cls.__instance @classmethod def instance(cls, *args, **kwargs): cls.__inst.. 2021. 8. 4.
# 17. [Magic Method] __new__() & __init__() 파이썬을 다루면서 클래스를 작성해보았다면 인스턴스를 생성해본 적이 있을 것이다. class o: pass o1 = o() 대체로 2021. 8. 2.