본문 바로가기

TIL

(18)
[TIL] #17. self에 대하여 self 의 의미 Python에서 함수의 인자로 self 를 지정해놓는 경우를 볼 수 있다. 도대체 이 self 는 어떤 것을 의미하는 것일까? 결론을 먼저 말하면 self 는 객체의 인스턴스 그 자체를 의미한다. 이것을 이해하기 위해서는 먼저 Class에 대해 이해를 해야한다. 클래스는 변수와 함수를 묶어서 새로운 객체(타입)으로 만드는 것이다. 이렇게 만든 클래스를 사용하기 위해서는 인스턴스를 생성해야한다. 인스턴스는 클래스에 정의된 속성을 가지는 객체, 흔히 비유하는 붕어빵틀(클래스)로 찍어낸 붕어빵(인스턴스)이다. 인스턴스를 생성하는 방법은 클래스명() 으로 생성할 수 있다. 클래스 내부에 정의된 함수는 메서드(method)라고 하는데 이 때 메서드의 첫번째 인자는 반드시 self 여야 한다. 사..
[TIL] #16. ORM ORM이란? ORM은 Object-Relation Mapping의 약자로 객체(Object)와 관계형 데이터베이스(Relational Database)를 매핑(Mapping)해주는 것을 말한다. 직접 SQL문을 작성하여 데이터베이스를 핸들링 하지 않고 Class로 정의된 객체간의 관계를 기반으로 SQL문을 자동으로 생성하여 데이터베이스를 핸들링할 수 있게 해준다. django의 경우, 프로젝트 폴더 내에 models.py 파일이 ORM과 관련된 파일이다. 이 파일에 클래스를 작성함으로써 관계형 데이터베이스를 설계할 수 있다. ORM의 장단점 Pros 객체지향적인 코드로 인해 직관적인 코드 작성이 가능하다 SQL이 아닌 클래스의 메소드로 DB를 핸들링하므로 개발자가 객체 모델만 이용하여 로직을 구현하는 일..
[Project] Westagram #1 프로젝트 목표 회원가입/로그인 기능 구현. 웹 사이트에서 가장 기본이 되는 기능이므로 확실하게 알아두자. 프로젝트 구현 과정 모델링 회원가입에 필요한 정보는 이메일(또는 휴대전화번호) 이름(실제 사람 이름) 사용자 이름(인스타그램 내에서 사용하는 이름) 비밀번호 4가지 정보를 생각하고 모델링을 했다. 위 정보를 기반으로 models.py를 작성했다. from django.db import models class User(models.Model): email = models.CharField(max_length=300) name = models.CharField(max_length=45) nickname = models.CharField(max_length=45) password = models.CharF..
[TIL] #15. Django-Introduction Django Django란 무엇일까 Django는 Python기반의 오픈소스 웹 애플리케이션 프레임워크이다. 쉽게 말하면, 웹 사이트를 Python기반으로 구축하기 위해서 필요한 여러 가지 도구들을 모아놓은 것이라고 할 수 있다. Java진영의 Spring과 같은 것이라고 생각하면 된다. Python에는 Flask라는 프레임워크도 있는데 Django는 Flask보다 기본적으로 조금 더 많은 기능을 처음부터 포함시켜 제공한다. Flask와 비교했을때 조금 더 무거운 만큼 기본적으로 제공해주는 기능이 많고 그에 따라 커스터마이징에는 비교적 제약이 따르는 프레임워크라고 할 수 있다. MVC 패턴 Django는 MVC 패턴에 기반한 프레임워크이다. 엄연히 말하면 MTV 라고 할 수 있지만 구성된 방식은 기본적으..
[TIL] #14. Framework vs Library Framework와 Library는 서로 다른 개념이라는 것을 느낌적으로 알지만 막상 어떤 차이가 있는지 설명하려고 하면 명확하게 대답할 수 없었다. Django, Flask, Spring 등이 프레임워크에 해당하는 것이고 라이브러리는 모듈(?)로 만들어져 있어서 필요할 때 호출해서 사용할 수 있는 것으로 알고 있었는데 면접에 이런 질문이 나왔다고 생각했을 때 이런 답변은 적절하지 않은 느낌이 들었다. 비슷한거 같기도 하면서 다른 이 두가지에 대해 확실하게 정리하고 넘어가자. Framework 프레임워크라는 단어는 뼈대를 의미한다. 프레임워크는 보통 클래스와 라이브러리가 합쳐진 형태를 말한다. 소프트웨어를 만들 수 있는 개발 환경을 일정 수준 갖추어 놓은 것으로 재사용성을 높여 개발 속도를 빠르게 한다...
[TIL] #13. __init__.py __init__.py __init__.py 는 이 파일을 포함하고 있는 디렉토리가 패키지의 일부임을 알려주는 역할을 한다. 그런데, Python 3.3 버전부터는 이 파일이 없어도 패키지로 인식을 한다고 한다. 하지만, 이미 만들어진 하위 버전들과의 호환을 위해 이 파일을 생성하는 것이 안전한 방법이라고 한다. Refernces 점프투파이썬
[TIL] #12. Absolute path & Relative path Absolute path Absolute path는 말 그대로 절대경로를 말하며 import하는 파일이나 경로에 상관없이 항상 동일한 경로를 말한다. linux에서 말하는 절대경로와 같은 의미를 가진다. 쉽게 생각하면 import하고자 하는 대상이 위치한 경로를 최상위 경로부터 모두 표기하여 import하는 방식이다. 일반적으로 local package를 import할 때는 절대경로를 사용한다. 다음과 같은 구조를 가진 디렉토리가 있다고 치자. . +-- project +-- main.py +-- package1 | +-- module1 +-- package2 +-- module2 +-- module3 +-- subpackage1 +-- module4여기서 module1을 절대경로를 사용하여 import..
[TIL] #11. Module&Package Module과 Package 모듈은 재사용할 목적으로 작성된 Python 소스 파일을 의미한다. 이런 모듈들 여러개가 모여서 어떤 디렉토리안에 포함된다면 그 디렉토리를 패키지라고 한다. sys모듈 공식문서에 따르면 sys 모듈은 다음과 같이 설명되어 있다.(구글 번역😅) 인터프리터에 의해 사용되거나 유지되는 일부 변수와 인터프리터와 강하게 상호작용하는 함수에 대한 엑세스를 제공한다. 즉, Python 인터프리터와 관련된 정보와 기능을 직접 다룰 수 있도록 해주는 모듈이다. 모듈이나 패키지를 import하면 Python은 다음과 같은 우선순위로 모듈/패키지를 찾는다. sys.modules built-in modules sys.path 1,3은 sys 모듈을 통해 접근할 수 있고 2의 경우 sys.built..