본문 바로가기

분류 전체보기

(104)
RePythonOOP 8일차 매직메소드 오버라이딩 심화 (+ bool()) Insight 1. 코딩을 할때 명확한 나의 의도대로 동작하지 않을 때가 있다. 내가 부딫힌 부분은 bool()함수 였다. 2. 시야를 넗게, 여러 가능성을 두고 확장하는 것이 soft skill을 늘릴 수 있다는 것을 깨달았다. 3. class내 init을 분기해 메소드 오버 로딩(같은 메서드 이름 , 다른 파라미터를 받을 수 있는 개념)처럼 꾸밀수 있다. init에 분기되는 x,y를 담는 속성과 과 repr로 출력하는 매직메서드를 생성합니다. init에 분기문은 오버 로딩 처럼 구현해 보겠습니다. (JAVA처럼 파이썬에서는 지원하지 못합니다) 추가로 파이썬의 object를 상속하는 함수를 만들어 보겠습니다. class XY(object): def __init__(self, *args): '''init..
TIL 11/29~12/05 - 확실히 Django로 프로젝트를 하니 러닝커브가 빨라짐 SQLalchemy과 Mysqlclient로 연결을 하고 Lean하게 기초 개발이 되었다. - 이후 기획했던 부분이 변경이 되어서 다시 기획을 하게 되었다. 기획부분이 미루어 져서 SQLalchemy에 대해서 좀 더 깊게학습하게되었다. - UI Flow 를 따라 데이터모델링을 하면 안된다. 데이터 모델은 독립적으로 구축되어야함 왜냐하면 데이터 정합성의 문제도 있고 UI FLOW는 수시로 바뀔수 있다. - 간단한 페이지 하나도 데이터 모델이 20개 정도가 나왔엇다. 정확하게 여러 데이터를 저장하게 하기 위해서는 여러 데이터의 이슈가 있었다. - 업무 적응이 되서 파이썬에 고급 기능 대해서 블로그를 연재 하게 되었다. 원노트에는 정리가 되었지만 남들..
RePythonOOP 7일차 매직메소드 오버라이딩 Insight 1.파이썬이 객채 생성시 매직메소드로 미리 함수적인 기능들은 만들어 준다 2.뭔가 내장 함수 명령어가 안된다면(대게 코더~ 잘못) I/O와 dir()함수로 보고 그에 맞게 코딩해주면 된다. 3.필요한 기능을 매직 메소드로 오버 라이딩하여 고칠 수 있다. 4. 메소드 오버로딩은 디폴드 값 사용, 가변또는 키워드인자로 만 사용 가능하다. 5. 코딩을 할 시 기능적 제약이 있으면 본인이 기능을 만들면서 고칠수 있다. 사전 지식 1.데이터의 모든 자료형은 클래스이다! print(int) # print(str) # 더 이상 안쳐도 되겠지만 항상 class를 출력합니다. 그래서 위의 말을 증명 할 수 있습니다. 모든 속성 및 메소드는 dir() 함수로 확인이 가능합니다. dictionary라고 이 참..
RePythonOOP 6일차 네임드 튜플 클래스 응용 해 보기 네임드 튜플을 응용하여 학교의 반, 학생정보를 가지는 클래스를 선언 해보겠습니다. 반마다 20명의 인원 , 4개의 ABCD반이 있고 A반 1~20명, B반 1~20명 ... 있는 구조입니다. 전체 코드입니다. from collections import namedtuple Classes = namedtuple('Classes', ['rank', 'number']) numbers = [str(n) for n in range(1, 21)] ranks = 'A B C D'.split() students = [Classes(rank, number) for rank in ranks for number in numbers] print('len -', len(students)) print('students -', st..
sqlalchemy로 Django DB를 mysql로 세팅하기 1 ( DB접속 및 모델생성 하기) 모든 코드의 바탕은 sqlalchemy의 Docs기반입니다 (https://docs.sqlalchemy.org/en/13/orm/tutorial.html) Insight - print(‘python manage.py migrate 안녕…') - SELECT "Hello World!"; - 파이썬 쉘 스크립팅을 통한 DB table 생성 및 접속 - 무엇인지 알았지만 어디서 쓰이는지 백엔드 서버입장에서 다시 보이게 되는 Oracle DB의 instance Django에서 기존 DjanoORM을 안쓰고 SQLalchemy(ORM)로 쓰는 이유는? 1.실제 DB의 운영과 맞지 않습니다. (기본적인 CRUD 사용할 것은 괜찮음) 2.기존장고ORM은 N+1 쿼리문제시 for문으로 쿼리를 요청하면 쿼리가 매우 많아..
RePython 5일차 중간 파이썬에서 파라미터와 인자는 왜 구분 하는 걸까? (파이썬에서 파라미터의 기본값은 클래스의 인스턴스화에 어떤 영향을 끼치는가 ?) 이 글은 파라미터, 인자의 구분까지 아신다고 가정하에 작성되었습니다. 그냥 구분을 하는것 보다 왜 왜 구분지어 부르는지에 대해 파헤치는 글입니다. Insight 파라미터에 기본값(mutable)을 지정한 클래스의 인스턴스화는 얕은 복사가 일어난다! 함수에서의 파라미터의 기본값을 사용하는 것은 함수 안의 로컬 영역의 변수(객체) 할당의 행위이다! (단 함수 호출시 인자로 새로운 값을 넣어줘서 디폴트 값을 사용하지 않으면 상관 없습니다. 이렇게 되면 디폴트 값 선언된 것은 사용되어 지지 않습니다!) 함수 내에 파라미터, 인자들도 결국 하나의 값 할당 전의 변수이거나 값을 할당한 변수이다. 파라미터의 기본값을 사용하는 클래스의 인스턴스화는 얕은 복사가 일어난다! 하지만 파라미터와 상관없이 인자를 주면 클래스의..
RePythonOOP 4일차 파이썬의 데이터 모델 , 네임드 튜플 , 속성과 메소드 들 insight 네임드 스페이스를 사용하는 이유 1 (클래스는 비싸고 딕셔너리는 너무 쉽게 변화되는데 값의 네임(키)를 주고 싶을 때) 네임드 스페이스를 사용하는 이유 2 (튜플을 인덱싱으로 접근하는 것을 파이썬 스럽지 못하고 가독성도 떨어져서) 네임드 튜플을 선언 하면서 리스트나 딕셔너리를 인자로 받을 수 있다 네임드 튜플의 메서드들과 값을 수정할 수 있는 메서드도 있다. All Code Info : https://github.com/DevRyu/DaliyCode/blob/master/OOPpython/Day04.py 오늘은 다른 일들로 코딩을 잘못해서 개고생하다가 위의 이미지가 내 마음 같아서 여기 붙였다. 파이썬의 중요한 핵심 프레임워크는 시퀀스(seq),반복(iter),함수(fun),클래스(cla)..
RePythonOOP 3일차 객체의 메서드들 ( 클래스 메서드, 인스턴스 메서드, 스테틱 메서드) insight 이러한 3가지 메서드를 잘 분류하는 것을 모듈화 모듈화가 모이면 패키지다 인스턴스 생성후 사용하는 메서드, self가 있으면 인스턴스 메서드이다. 클래스 메서드는 첫번째 인자로 클래스를 받고 두번째 인자로 원하는 값을 받는다 클래스 메서드로 객체를 인스턴스화 시킬수도 있다. 스테틱 메서드는 인자가 인스턴스 밖에 필요 없고 어떠한 인스턴스도 사용할 수 있다 All Code Info : https://github.com/DevRyu/DaliyCode/blob/master/OOPpython/Day03.py 일단 클래스와 익숙한 인스턴스 메서드를 선언 하겠습니다. class Student(object): ''' author : Ryu Date : 2019-11-28 ''' tuition = 1.0..