본문 바로가기

Python

[디자인패턴] 파이썬에서 Decorator Pattern (데코레이터 패턴) 구현하기 이 글은 decorator(@기호와 함께 쓰는)라고 하는 파이썬의 기능에 관한 것이 아니라 "데코레이터" 및 "위임"라는 디자인 패턴에 관한 글이다. 이전 글에 이어서 이번에는 위임을 사용하는 데코레이터 패턴에 대해 정리해보고자 한다. 참고) 공부중에 나는 “파이썬의 데코레이터가 데코레이터 패턴을 구현한 것과 동일한 것이 아닌가?” 라는 의문점이 있었는데 이 글을 보고 차이점을 이해하였다. 데코레이션(decoration)이란? 객체에 기능을 추가하고는 싶지만 해당 객체의 클래스를 확장하지 않을 때 사용 기본 클래스에 영향을 주지 않고 필요할 때 동작을 동적으로 추가 객체 지향 설계의 단일 책임 원칙(SRP)을 준수를 유지하는 데 필요 위임과 마찬가지로 데코레이터 패턴은 상속으로 문제를 해결할 수 있지만 .. 더보기
[디자인패턴] 파이썬에서 Delegate Pattern (위임 패턴) 구현하기 이번 글에서는 객체 지향 디자인 패턴의 하나인 “위임 패턴”에 대해 정리해보고자 한다. 언제 필요한가? 코드 재사용이 필요할 때 상속(inheritance)이나 합성(composition) 중 하나로만 구현하기에 부적절한 상황일 경우 상속: 부모 클래스에서 상속받아 한 클래스의 구현을 정의 합성: 다른 객체를 여러개 붙여서 새로운 객체를 구성 상속시 부모 클래스에 종속되는 것을 원치 않는 경우 부모 클래스의 구현에 변경이 생기면 서브 클래스도 변경해야함 기존 구성 요소의 조합만으로는 목적을 달성하기 어려운 경우 위임(delegation)이란? 위키백과의 정의: 위임 패턴은 객체 지향 디자인 패턴으로, 객체 구성을 통해 상속과 동일한 코드 재사용을 달성할 수 있다. 어떠한 연산을 처리할때 객체는 연산의 처.. 더보기
[Python/NLP] 위키피디아 덤프 데이터에서 하이퍼링크(anchor text) 추출하기 wiki의 dump 데이터에서 plain text를 추출하기 위한 도구로써 wiki extractor를 패키지가 존재합니다. 해당 방법에 대한 포스트는 다음 글에서 자세히 설명하고, 이번 글에서는 html태그를 포함한 plain text가 준비되었다는 전제 하에 앵커 텍스트를 추출하는 방법에 대해 소개하고자 합니다. Anchor text (앵커 텍스트) anchor text는 HTML 하이퍼 링크에서 볼 수 있고 클릭 가능한 텍스트입니다. "anchor"라는 용어는 현재 a 요소 또는 라고하는 HTML 사양의 이전 버전에서 사용되었습니다. 위키 페이지 내에서는 파란색으로 나타나는 텍스트가 anchor text 이며, 해당 텍스트는 위키 내에서 자신만의 고유한 페이지가 존재 합니다. 위의 섹션을 개발자 도.. 더보기
[Python] Beutiful Soup4 - decompose() 와 extract() 목표 미디어 위키 페이지에서 중첩된 리스트 내의 요소들을 텍스트로 추출한다. 위와 같은 중첩 리스트에서 list 내의 text를 모두 추출한 결과 다음과 같았다. 중첩 리스트의 텍스트가 모두 추출되고, 그 다음 요소에 중복해서 등장한다. 따라서 두 list를 분리하기 위해 두 가지 방식을 알게 되었다. .decompose() 태그를 트리에서 제거한 다음, 그와 그의 내용물을 완전히 파괴한다. lists = content.find_all('li') for idx in range(len(lists)): if lists[idx].ul is not None: lists[idx].ul.decompose() text = lists[idx].text print(f"{idx} 번째 list : {text}") 그 결과.. 더보기
[Python] 백준 알고리즘 5단계: 1차원 배열 🔗 제출 답안 Github 링크 GitHub - dbj2000/TIL: 본 레포는 학습의 일상화(1일 1커밋) 를 위한 레포지터리입니다. 본 레포는 학습의 일상화(1일 1커밋) 를 위한 레포지터리입니다. Contribute to dbj2000/TIL development by creating an account on GitHub. github.com 10818_최소최대.py 1546_평균.py 2562_최댓값.py 2577_숫자의개수.py 3052_나머지.py 4344_평균은넘겠지.py 8959_OX퀴즈.py 💡 문제 풀이 중 알게된 내용 📑 2562_최댓값 문제 中 # 임의의 개수의 정수를 n줄 입력받아 1차원 리스트에 저장 data = [] for i in range(9): data.append(in.. 더보기