본문 바로가기

Language/Python

(17)
RePythonOOP 9일차 파이썬 컨테이너 VS 플랫, 가변 VS 불변, 리스트 컴프리 핸션 Insight 1. 리스트내에 for문을 통한 값 할당시 무조건 (지능형) 리스트 컴프리 핸션이 빠르다. 2. 가변 불변, 컨테이너, 플랫은 자주 보면서 외우려고 마음을 먹었다. (중요하고 나중에 다시 찾아 볼거 같아서) 3. 성능이 빠른 것도 중요하지만 때로는 상황에 맞게 코딩하는 여러 구현 방법들을 살펴 보았다. 시퀸스형(순서,순차)에서의 구분 서로 다른 자료형(container)을 담을수 있는 객체 tuple , list , collections.deque 하나의 자료형(flat)만을 담을수 있는 객체 str,bytes,bytearray,array.array, memoryview 가변(mutable)적인 객체 list, bytearray, array.array, memoryview, deque 불변..
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..
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..
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..
RePythonOOP 2일차 클래스 상세( 인스턴스, 클래스 변수, 인스턴스 변수, 클래스 설계 ) insight 클래스 변수와 인스턴스 변수의 차이 및 활용 방법 인스턴스 네임스페이스(__dict__)에 클래스 변수가 없어도 부모 클래스로 찾아 간다 (상속) self의 참의미와 활용법 All Code Info : https://github.com/DevRyu/DaliyCode/blob/master/OOPpython/Day02.py 프랜시스 베이컨식으로 클래스를 해체해보자! 클래스 상세( 인스턴스, 클래스 변수, 인스턴스 변수, 클래스 설계 ) 일단 학생클래스를 생성하고 메서드를 미리 생성하겠습니다. class Student(): """ author : ryu date : 2019-11-27 """ # 클래스 변수(공용 scope) student_count = 0 # 인스턴스의 변수(인스턴스 선언시의 ..
RePythonOOP 1일차 절차지향 VS 객체 지향 그리고 클래스 Insight 1. str, repr의 차이와 쓰임새 2. 절차 지향, 객체 지향의 차이와 쓰임새 All Code Info : https://github.com/DevRyu/DaliyCode/blob/master/OOPpython/Day01.py 1. 절차지향 VS 객체지향 절차 지향 => 함수적 프로그래밍 절차 지향적인 코딩 스타일 위에서 아래로 읽는다 student_1 = "kim" student_11 = 1 student_111 = [ {'hi':'how' }] student_2 = "kim" student_22 = 1 student_222 = [ {'hi':'how' }] student_3 = "kim" student_33 = 1 student_333 = [ {'hi':'how' }] 리스트 구조..