[파이썬 심화] 16. 최상위 클래스 object (다시 공부 필요)
◎ Python/파이썬 심화 (책)2022. 9. 14. 20:16[파이썬 심화] 16. 최상위 클래스 object (다시 공부 필요)

모든 객체지향 언어는 클래스를 만들 때 최상위 클래스를 상속하는 구조로 되어 있다. C++의 경우는 살짝 다른 것으로 알고 있지만 자바는 파이썬과 같이 최상위 클래스를 상속한다. 파이썬에서의 최상위 클래스는 object이다. object 클래스의 내부 속성 알아보기 object 클래스는 스페셜 속성과 스페셜 메소드만으로 구성된다. 파이썬에서 제공하는 기본 클래스들을 원소로 갖는 리스트를 선언해보자. ll = [str, int, list, tuple, type(None), object, type] 여기서 최상위 클래스 object 내의 내장 클래스로 만든 객체를 가진 경우만 추출한다. 제어문에 있는 object.__getattribute__는 점 연산에 해당하는 스페셜 메소드이다. 인자로 클래스나 속성, ..

[파이썬 심화] 15. 특별한 내장 클래스
◎ Python/파이썬 심화 (책)2022. 9. 13. 12:13[파이썬 심화] 15. 특별한 내장 클래스

예약어로 관리되는 객체 대표적으로 아무것도 없는 객체를 나타내는 None은 예약어다. type 클래스로 None을 확인하면 NoneType 클래스인 것을 볼 수 있다. 이 클래스는 하나의 객체만 만들어 사용한다. type(None) [결과] NoneType True/False도 예약어다. 이 예약어들은 내장 클래스 bool로 만들어진 2개의 객체가 할당된다. 참고로 파이썬의 다양한 객체들 (int, float, complex, 문자열, 튜플, 리스트 등등)은 0이거나 없다라는 의미일 때는 False를 반환하고 무엇이라도 존재한다면, 즉 원소가 하나라도 존재한다면 모두 True를 반환한다. 특이하게도 bool 클래스는 int 클래스를 상속한다. bool.__base__ [결과] int 범위를 처리하는 클래..

[파이썬 심화] 14. 클래스와 객체 구조를 알아보자
◎ Python/파이썬 심화 (책)2022. 9. 7. 22:50[파이썬 심화] 14. 클래스와 객체 구조를 알아보자

클래스에 의해 생성된 객체는 항상 유일한 객체를 유지하기 위해 별도의 식별 레퍼런스를 가진다. 같은 객체인지 아닌지 비교할 때 이 레퍼런스를 비교하면 된다! 클래스와 객체의 관계는? 우선 클래스가 설계도이고, 객체는 클래스라는 설계도로 생성된 대상을 뜻한다. 그래서 객체를 클래스의 인스턴스라고도 부른다. 이러한 클래스와 객체의 관계는 어떻게 되어 있을까? 우선 아무것도 하지 않는 클래스를 정의한다. class Klass(object): pass object 클래스를 상속받는다고 표기해주었지만, 상속을 임의로 주지 않아도 object 클래스를 상속한다. 이에 대한 자세한 설명은 아래 링크를 참고하면 좋을 것 같다. https://jh-bk.tistory.com/24 [Python] 클래스가 object를 ..

[파이썬 심화] 13. 클래스 정의하기
◎ Python/파이썬 심화 (책)2022. 9. 6. 19:32[파이썬 심화] 13. 클래스 정의하기

함수를 정의하는 것은 함수 객체를 만드는 것이다. 클래스를 정의하는 것도 실제 클래스를 만드는 것이다. 파이썬에서 클래스는 객체를 만드는 툴이다! 클래스를 정의하는 문장 클래스를 만드는 이유는 클래스가 관리하는 영역과 객체를 만들어 사용하는 영역을 구분하기 위해서이다. 클래스나 객체는 자신이 사용하는 속성과 메소드를 가질 수 있다. 클래스를 정의하는 기본적인 규칙은 머리부와 몸체부를 선언하는 것이다. class Person(object): pass 객체를 생성할 때는 클래스 이름과 호출 연산자를 사용한다. 객체를 사용하려면 변수에 할당해야 하고 객체가 만들어지면 자신을 생성한 클래스 정보를 __class__ 속성에 보관한다. 이 속성을 조회하면 클래스 정보가 나온다. 현재 출력된 클래스 정보 앞에 __m..

[파이썬 심화] 12. 함수에 여러 가지 종류의 매개변수를 설정할 수 있다!
◎ Python/파이썬 심화 (책)2022. 9. 5. 22:56[파이썬 심화] 12. 함수에 여러 가지 종류의 매개변수를 설정할 수 있다!

입력 데이터를 처리하는 방식을 이해하는 것은 함수 정의문의 매개변수와 함수 호출의 인자간의 매핑을 이해하는 것과 같다. 파이썬은 이러한 매핑 관계 4가지를 제공한다. 고정 위치 인자와 가변 위치 인자 처리 고정 위치인자 처리 함수를 작성할 때 매개변수에 x, y, z를 이름으로 정의하면 함수를 호출할 때도 3개의 인자를 전달해야 한다. 이런 방식을 고정 위치인자라고 하고, 함수를 호출할 때도 고정으로 인자를 전달해 위치에 맞게 1대1로 매핑해서 처리한다. 함수의 내부 이름공간에 어떻게 매개변수와 인자가 매칭되는지 내장함수 locals를 실행해 알아보자. def func(x, y, z): print(f"내부 이름공간 : {locals()}") return x + y + z func(1, 2, 3) [결과]..

[파이썬 심화] 11. 함수 정의하기
◎ Python/파이썬 심화 (책)2022. 9. 2. 18:12[파이썬 심화] 11. 함수 정의하기

함수는 1급 객체이다 정수나 문자열은 1급 객체(first-class object)이다. 따라서 변수, 매개변수, 반환값 등에 정의해서 사용할 수 있다. 함수 또한 1급 객체로 다른 객체와 같은 방식으로 사용할 수 있다. 직접 함수를 정의해서 예를 들어보자. def func(x, y): return x + y var = func var is func # 두 변수는 같은 함수를 참조하므로 레퍼런스가 같다. [결과] True def func(x, y): return x + y func = 10 # 함수가 정의된 func 변수에 숫자를 할당하면 기존 함수 객체가 사라진다. func [결과] 10 이 상태에서 만약 func에 인자를 주면 오류가 난다. def func(x, y): return x + y func..

[파이썬 심화] 10. 여러 조건에 따라 기능 선택하기
◎ Python/파이썬 심화 (책)2022. 9. 1. 18:16[파이썬 심화] 10. 여러 조건에 따라 기능 선택하기

삼항 연산자로 더 짧은 코드를 만들자 var = int(input("숫자를 입력하세요 : ")) if var < 10: print("10보다 작습니다") else: print("10보다 크거나 같습니다") if-else문을 보통 위와 같이 쓰지만, 한 줄로 더 짧게 만들 수 있다. var = int(input("숫자를 입력하세요 : ")) print("10보다 작습니다") if var < 10 else print("10보다 크거나 같습니다") 이와 같은 삼항 연산자는 코드가 더 짧아진다는 장점 외에도 if-else문보다 메모리도 적게 차지한다. 또한 본인은 함수에서 return할 때 자주 사용한다. 참고하면 좋을 링크도 첨부한다. https://tpgns.github.io/2018/04/24/nested..

[파이썬 심화] 9. 여러 문장을 묶어 반복 실행하기
◎ Python/파이썬 심화 (책)2022. 8. 31. 20:13[파이썬 심화] 9. 여러 문장을 묶어 반복 실행하기

반복형(iterable)과 반복자(Iterator)은 다르다! 반복형(iterable)이란? 말 그대로 '반복 가능한 객체'를 말한다. 특징으로 원소를 여러 개 가진 정적인 객체를 만든다. 반복자(Iterator)이란? 반복자 객체는 값을 차례대로 꺼낼 수 있는 객체를 말한다. 동적 처리를 하기 위해 별도의 핸들러를 만든 후 내부의 원소를 하나씩 꺼내 처리하는 기능을 제공한다. 사실 이렇게 봐도 다른 점이 잘 보이지 않는다. 예제로 보자. 우선 Iterable인지 Iterator인지 구별하기 위해 collections 모듈을 import한 후 상속 관계를 파악하는 issubclass 함수를 이용해 Iterable 클래스를 상속받는지, Iterator 클래스를 상속받는지 알아보자. import collec..

[파이썬 심화] 8. 조건 판단에 따른 문장 선택하기
◎ Python/파이썬 심화 (책)2022. 8. 30. 18:35[파이썬 심화] 8. 조건 판단에 따른 문장 선택하기

단순 제어문 단선 제어문은 if 예약어만 사용해서 참일 경우 해당 문장을 처리하거나 else와 겸용해서 참과 거짓에 따라 문장을 선택해 처리할 수 있다. if False: # if문이 참일 때 실행됨 print("참") else: # if문이 거짓일 때 실행됨 print("거짓") [결과] 거짓 한 가지 유의할 점은 조건식을 판단하기 전에 예외처리가 먼저 진행되므로 if 조건문에 예외가 발생하지 않도록 조심해야 한다. 또한 자료형에서 빈 값은 Flase로 처리한다. 즉 리스트, 딕셔너리, 집합 등이 비어있을 때 False를 반환한다. 복합 제어문 조건이 많아지면 판단해야 하는 경우가 많아지고, 이를 위해서 각 조건을 분리해 제어문을 작성해야 한다. 이런 경우에 elif를 사용한 복합 제어문이 필요하다. ..

[파이썬 심화] 7. 할당 및 기타 문장 처리하기
◎ Python/파이썬 심화 (책)2022. 8. 29. 22:06[파이썬 심화] 7. 할당 및 기타 문장 처리하기

변수에 값을 할당(assignment)하다 파이썬은 변수를 정의하면 이름공간에 변수의 이름을 Key로 만들고 객체를 값으로 저장한다. 이름공간이 딕셔너리이기 때문! 이러한 할당문은 모듈, 함수, 클래스 등 다양한 곳에 정의할 수 있다. 여러 값을 여러 변수에 할당하려면 원소의 개수가 같아야 한다. 개수가 같지 않다면 예외가 발생한다! x, y, z = 1, 2, 3 x, y, z = [1, 2, 3] x, y, z = (1, 2, 3) 물론 변수와 원소의 개수가 같지 않아도 패킹을 이용해 남는 원소를 리스트로 묶어버릴 수 있다. x, *y = 1, 2, 3 x, y [결과] (1, [2, 3]) 사용하지 않는 변수는 어떻게 처리할까? 보통 파이썬에서는 관용적으로 사용하지 않는 변수를 _로 처리한다. 이는..

[파이썬 심화] 6. 문서화와 주석으로 꾸미기
◎ Python/파이썬 심화 (책)2022. 8. 28. 16:13[파이썬 심화] 6. 문서화와 주석으로 꾸미기

프로그램을 실행해서 원하는 결과가 나와도 프로그램이 완성된 것은 아니다. 프로그램을 유지하려면 프로그램에 대한 설명이 필요하기 때문이다. 특히 모듈, 클래스, 함수에 관한 설명은 긴 문장으로 작성된다. 함수와 클래스의 문서화(docstring) 파이썬 프로그램의 기준은 함수, 클래스, 모듈이다. 이 단위 기능을 설명하기 위해 문서화를 제공한다. 문서화로 작성된 것은 도움말 함수 help로 조회할 수 있다. 아무 모듈이나 import해보자. import math 모듈의 문서화는 속성 __doc__에 저장되고 이를 다른 변수에 할당한 후 print로 출력할 수 있다. import math a = math.__doc__ print(a) [결과] This module provides access to the m..

[파이썬 심화] 5. 문장 꾸미기
◎ Python/파이썬 심화 (책)2022. 8. 27. 10:53[파이썬 심화] 5. 문장 꾸미기

제어문이나 순환문 등 에 여러 문장을 묶어 작성해야 할 때가 있다. 이 경우 다른 프로그램 언어는 중괄호를 통해 블록 문장으로 구분하지만 파이썬은 들여 쓰는 방식을 사용한다. 또한 한 문장이 길어지는 경우 여러 줄을 사용할 수 있는데 한 문장으로 연결하는 방식에는 역슬래시, 괄호 등을 사용한다. 여러 문장을 한 줄에 쓸 때는 문장의 끝에 세미콜론을 붙인다. 문장의 끝은 한 줄에 여러 문장을 쓸 경우에만 사용한다. 블록 문장의 줄 들여쓰기 (Lines and Indentation) 조건문, 순환문, 함수 정의문 등에 머리부와 몸체부를 콜론(:)으로 구분한다. 몸체부는 들여쓰기 후 한 장 또는 여러 문장의 블록 문장을 작성한다. 들여쓰기 알아보기 순환문인 for문의 머리부를 작성한 후 콜론 다음에 문장을 들..

image