프로필사진

IT Anthology 30

[객체 지향 프로그래밍] SOLID 원칙

* 이 글은 코드잇의 코스를 수강하고 정리한 글입니다. * 나중에라도 제가 참고하기 위해 정리해 두었으며, 모든 내용을 적은 것이 아닌, 필요하다고 생각되는 부분만 추려서 정리한 것임을 미리 밝힙니다. SOLID 원칙을 지키면 유연하고 유지보수하기 쉬운 견고한 코들르 쓸 수 있다고 한다. 프로그램의 크기가 커질 수록 SOLID 원칙을 잘 지키는 것이 중요하다. 하지만 작고 간단한 프로그램을 만드는데 이 원칙을 지키면 오히려 시간 낭비가 될 수도 있다. SOLID 원칙에는 아래 다섯가지가 있다. 1. 단일 책임 원칙 (Single Responsibility Principle) : 모든 클래스는 단 한가지의 책임만을 갖고, 클래스 안에 정의되어 있는 모든 기능은 이 하나의 책임을 수행하는데 집중되어 있어야 ..

[객체 지향 프로그래밍] 다형성(Polymorphism)

* 이 글은 코드잇의 코스를 수강하고 정리한 글입니다. * 나중에라도 제가 참고하기 위해 정리해 두었으며, 모든 내용을 적은 것이 아닌, 필요하다고 생각되는 부분만 추려서 정리한 것임을 미리 밝힙니다. 다형성이란? 다형성의 원래 정의: 여러가지의 형태를 갖는 성질 객체 지향 프로그래밍에서의 다형성: 하나의 변수가 서로 다른 클래스의 인스턴스를 가리킬 수 있는 성질 예시 Circle이라는 클래스와 Rectangle이라는 클래스가 있을 때, 각각의 클래스가 모두 넓이를 계산하는 area라는 메소드를 가지고 있다고 해보자. 한편, 추가된 모든 도형의 넓이 총합을 계산해주는 클래스가 다음과 같이 있다고 할 때, class Canvas: def __init__(self): self.shapes = [] def a..

[객체 지향 프로그래밍] 상속

* 이 글은 코드잇의 코스를 수강하고 정리한 글입니다. * 나중에라도 제가 참고하기 위해 정리해 두었으며, 모든 내용을 적은 것이 아닌, 필요하다고 생각되는 부분만 추려서 정리한 것임을 미리 밝힙니다. 버거집에서 계산원과 배달원이 있을 경우, 위와 같이 클래스 간에 중복되는 코드가 많다..!! 이때 해결점을 제시할 수 있는 게 바로 상속 상속이란? : 두 클래스 사이에 부모-자식 관계를 설정하는 것 : 'A는 B다'일 때, A는 자식클래스, B는 부모클래스 여기서 잠깐!! 상속과 관련된 깨알 메소드 (1) 클래스명.mro(): 해당 인스턴스의 클래스가 어떤 부모 클래스를 가지는지 보여줌 (2) isinstance(생성된인스턴스, 클래스명): 첫번째 파라미터의 인스턴스가 두번째 파라미터 클래스의 인스턴스인..

[객체 지향 프로그래밍] 캡슐화

* 이 글은 코드잇의 코스를 수강하고 정리한 글입니다. * 나중에라도 제가 참고하기 위해 정리해 두었으며, 모든 내용을 적은 것이 아닌, 필요하다고 생각되는 부분만 추려서 정리한 것임을 미리 밝힙니다. 캡슐화란? 객체의 일부 구현 내용에 대한 외부로부터의 직접적인 액세스를 차단하는 것 객체의 속성과 그것을 사용하는 행동을 하나로 묶는 것 1. 외부로부터의 직접적인 액세스를 차단 변수나 메소드를 초기 정의 시 __를 앞에 붙이면 클래스 밖에서 호출할 수 없음 예시는 아래와 같다. Class Citizen: """주민 클래스""" def __init__(self, name, age, resident_id): """이름, 나이, 주민등록번호""" self.name = name self.__age = age s..

[객체 지향 프로그래밍] 추상화

* 이 글은 코드잇의 코스를 수강하고 정리한 글입니다. * 나중에라도 제가 참고하기 위해 정리해 두었으며, 모든 내용을 적은 것이 아닌, 필요하다고 생각되는 부분만 추려서 정리한 것임을 미리 밝힙니다. 추상화란? 정의: 어떤 것을 사용할 때, 몰라도 되는 부분은 감추고, 꼭 알아야하는 부분만 드러내는 것 프그래밍에서 추상화란? : 프로그래머들이 특정 코를 사용할 때 필수적인 정보를 제외한 세부사항을 가리는 변수나 함수의 정의도 일종의 추상화라고 볼 수 있음!!

[OOP] 객체 지향 프로그래밍에 대한 기본 개념

* 이 글은 코드잇의 코스를 수강하고 정리한 글입니다. * 나중에라도 제가 참고하기 위해 정리해 두었으며, 모든 내용을 적은 것이 아닌, 필요하다고 생각되는 부분만 추려서 정리한 것임을 미리 밝힙니다. 객체란? : 우리가 살아가면서 보는 모든 존재로, 속성과 행동으로 구성된 존재 : 예시1) 자동차 객체의 속성은 색깔, 의자 개수, 차의 크기 등의 속성이 있으며, 행동과 행동을 가지고 있음 : 예시2) 인스타그램 유저 객체의 속성은 이메일 주소, 비밀번호, 친구 목록 등이 있으며, 행동과 행동을 가지고 있음 -> 물리적으로 존재하지 않는다 해도 속성과 행동으로 구성된 존재이므로 객체이다. 객체 지향 프로그래밍이란 객체 지향 프로그래밍의 정의 : 프로그램을 여러 개의 독립된 객체들과, 그 객체들 간의 상호..

[알고리즘 중심의 머신러닝 가이드] 13. 위원회의 결정: 앙상블 학습

이 글은 제이펍(Jpub)에서 발간된 을 공부하고 요약한 글입니다. 목차 들어가기 전에 13.1 부스팅 13.1.1 아다부스트 13.1.2 스텀핑 13.2 배깅 13.2.1 서브배깅 13.3 랜덤 포레스트 13.3.1 부스팅과 비교하기 13.4 분류기를 종합하는 다른 방법들 들어가기 전에 랜덤 포레스트에 대해 본격적으로 논하기 전, 랜덤 포레스트의 기본적인 개념인 '앙상블 학습'에 대해 다시 한번 짚고 넘어가고자 한다. 앙상블 학습의 정의와 목적에 대해 알아보도록 한다. - 앙상블 학습(ensemble learning)이란? 더 좋은 예측 성능을 얻기 위해 약학습자(weak learners) 여러 개를 조합하여 강한 학습자(strong learner)를 만드는 것이다. 정의에 따르면, 우리가 앙상블 학습..

스크래퍼 만들기 2 - Selenium으로 스크래핑(크롤링)하기

(이 글은 2019년 8월 29일에 처음 작성한 글입니다) 셀레늄은 본래 웹이 잘 작동하는 지 실험하기 위한 도구였다. 하지만 자바 스크립트를 읽기 유용하다는 점에서 스크래핑 도구로 사용될 수 있다. 하지만 엄청 느리다. 인간이 하는 행동을 그대로 자동화 시킬 수 있다는 점에서 강력하지만 우리가 무의식적으로 하는 행동 (클릭 등)을 다 일일이 설정해줘야 하기 때문에 귀찮음 꼼꼼함이 요구된다. 기본적인 동작 실행 먼저 필요한 모듈을 불러온다. from selenium import webdriver (설치가 안되어 있다면 pip install selenium) 셀레늄은 파이썬 내에서 웹을 실행시켜 그 안에서 작업을 수행할 수 있게 해주는 도구이다. 셀레늄을 사용하기 위해서는 웹 드라이버가 필요하다. 맞는 버..

IT Anthology/how-to 2021.11.24

스크래퍼 만들기 1 - BeautifulSoup으로 스크래핑(크롤링)하기

(이 글은 2019년 8월 27일 처음 작성한 글입니다) 스크래핑, 혹은 크롤링은 데이터를 모으기 위한 첫번째 방법이다. 가장 필요한만큼 많은 방법이 존재한다. 파이썬에서 스크래핑을 배우기 시작한다면, 크게 아래 세가지의 툴에 대한 얘기를 많이 듣게 될 것이다. BeautifulSoup 이용 Selenium 이용 scrapy 이용 오늘은 가장 손쉽게 가지고 놀 수 있는 BeautifulSoup에 대해 정리해보겠다. BeautifulSoup 스크래핑 기본 필요한 모듈은 다음과 같다. import requests from bs4 import BeautifulSoup 네이버 뉴스를 한번 스크래핑 해보자 검색 keyword를 NLP로 해보겠다. 검색어를 입력하고 '뉴스'탭에 들어가면 위와 같은 주소가 나온다. ..

IT Anthology/how-to 2021.11.24

깃헙(github) 블로그 개설부터 글쓰기까지 총정리

(이 글은 2019년 8월 24일에 처음 작성한 글입니다) 깃헙 블로그는 자유도가 높은만큼 핸들링하는 방법이 손쉽지는 않다. 실력에 따라 무궁무진하게 디자인할 수 있지만, 이제 막 프로그래밍을 시작한 초보 개발자에게는 진입장벽이 있는 것이다. 지금의 블로그는 여러 이유 때문에 티스토리로 옮겨왔지만, 깃헙 블로그를 처음 시작할 때 꽤나 애먹었기 때문에 글을 써서 남겨놓았다. 깃헙 블로그를 선택하는 이유는 여러가지가 있을 수 있다. 당시 깃헙 블로그를 개설했던 첫번째 이유는 간지가 나서였다. 무려 'github'이 내 블로그 주소에 박히는 거니까. 깃헙으로 블로그를 개설하면 따라오는 '.io'도 뭔가 특별해 보였다. 두번째 이유는, 정해진 틀 없이 화면을 내 마음대로 요리할 수 있다는 점이었다. 하지만 나는..

IT Anthology/how-to 2021.11.24