Code IT
최근 어떤 분야에 흥미가 생겨 관련 강의 영상을 결제해 보는 중이다. 거의 10년간 Java만 사용해오다가 C#을 보는 중이다. 뭐 문법자체는 똑같고 사상도 똑같아서 안봐도 되지만, 그래도 결제를 했으니 보는 중이다. 수 차례의 강의 영상이 지나고 분기처리를 다루는 영상으로 왔는데 if 설명을 줄기차게 하고 switch를 다루는 내용이다. 서점에 판매하는 프로그래밍 책이나 인터넷 블로그등에 있는 글들을 보면, 이렇게 설명한다. "if는 조건이 많아지면, 복잡해져요. 그것을 깔끔하게 만들어주는게 switch 에요." 혹자는 위 말이 "반은 맞고 반은 틀렸다" 라고 말할 수 있다. 다만, 생각을 한번 해보자. Java나 C# 같은 상위레벨의 언어를 만든 사람들이 "if는 복잡하니까 switch 만 남겨두자"..
# 객체지향 프로그래밍에서 절대 빼놓을 수 없는 것, 그리고 가장 어려운 것. 그것은 상속이다. # 사실, 상속을 이해할 때 우리가 흔히 알고있는 그 "상속"을 떠올리면 이해하기가 어렵다. # 부모가 자식에게 물려주는 것을 이해하는 것은 어렵지 않다. # 그러나 반대로 자식이 부모에게 무언가를 얻어가는 것은 이해하기가 쉽지 않다. # "상속"이란 재산권자체를 물려받는 것이기에 역순으로 이해하기가 쉽지 않다는 것이다. # 불행히도, 상속에서는 역순으로 호출해야만 하는 상황이 적지 않다. # 그래서 본 파트는 상속이 아니라 "확장"을 이해시켜주고 싶다. # 확장은 한 클래스가 본래 가지고 있던 멤버변수나 메서드에 무엇인가를 더 추가하거나 # 본래가진 것을 수정하는 것을 말한다. # 집에서 발코니 확장이나 거..
# 클래스의 메서드는 두 가지 형태로 나뉜다. # 1. 인스턴스로 호출하는 "인스턴스 메서드" # 2. 클래로 호출하는 "클래스 메서드" # 지금 껏 만들어 왔던 모든 메서드들은 "인스턴스 메서드"들이다. # 인스턴스 메서드는 주로 멤벼번수들의 값을 참조하고 그 값을 변경시켜가며 # 결과를 만들어 가는 역할을 수행한다. # 클래스 메서드는 주로 변경되지 않는 값. # 즉, 상수나 유틸리티를 대상으로 사용하는 경우가 많다. # 클래스 메서드를 만드는 방법은 단순하다. # 메서드를 정의할 때 self 아귀먼츠를 제거하면 된다. class Util: def hello_in_class(): """ 클래스 메서드 (스태틱 메서드) """ print("반갑습니다.") def hello_in_instance(self..
https://developtip.tistory.com/110 - Python - class 링크된 위의 글에서 self라는 아귀먼트가 메서드마다 등장하고 있다.이 키워드를 보면서 의아해했을 것 같아 추가로 글을 작성한다. 객체지향프로그래밍을 지원하는 언어들은 클래스 내부에 멤버변수와 메서드를 정의하게 된다. 물론 멤버변수 혹은 메서드만 존재하는 클래스도 정의할 수 있다.아무튼, 클래스 내부에 정의되는 멤버변수들은 그 자체로는 큰 의미나 역할이 없다. 이 멤버변수는 항상 메서드라는 행위로만 접근할 수 있고 그 행위에 따라 의미가 변경될 수도 있다. 이 때, 메서드는 클래스(인스턴스) 내부의 멤버변수에 접근이 필요한데 그냥은 접근할 수 없다. class Kona: """ 주석 : 자동차를 클래스로 표현해보..
class Board: articles = [] def print_welcome_message(self): print("""############################ # Welcome to Python Boards # ############################""") def print_menu(self): print("""################################################################## # 1. List # 2. Search # 3. Read # 4. Delete # 5. Write # 0. Quit # ##################################################################""") de..
articles = [] def print_welcome_message(): print("""############################ # Welcome to Python Boards # ############################""") def print_menu(): print("""################################################################## # 1. List # 2. Search # 3. Read # 4. Delete # 5. Write # 0. Quit # ##################################################################""") def input_menu(): id = ..
# 파이썬은 객체지향프로그래밍이 가능한 언어다. # 객체지향프로그래밍은 무엇일까? # 문제를 해결하기 위한 개발 패러다임 중 하나이다. 프로그래밍에서 풀고자 하는 # 업무나 문제를 현실세계를 빗대어 해결해보자 라는 패러다임이다. # 깊이 파고든다면 철학적인 문제까지 가게 되니 이쯤만 해두도록 하자. # 클래스는 현실세계에 존재하는 모든 것들을 표현할 수 있는 하나의 수단이자 단위이다. # 현실세계에 존재하는 모든 것들의 공통점을 곰곰히 생각해보면 아래와 같은 결론에 닿게된다. # 모든 것들은 "속성(가지고 있는 것)"과 속성을 가지고 할 수 있는 # 다양한 "행위(가지고 있는 것을 활용한 행위)"를 가지고 있다. # 객체지향 프로그래밍에서 클래스는 방금 봤던 속성과 행위 중 한 가지 이상을 # 만족할 수..
# while 이나 for 반복문이 정상적으로 종료되었을 때, 반복을 마쳤다. 라는 # 내용을 개발자나 사용자에게 알리고 싶을 때 사용할 수 있는 키워드도 있다. # 바로 if에서 배웠던, else 가 그것이다. # 간단한 코드로 살펴보자. numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] for number in numbers: print(number) print("반복이 정상적으로 종료되었습니다.") # 위 코드는 반복이 종료되면, 즉시 "반복이 종료되었습니다."를 출력한다. # 우리가 하고자했던 것과 동일하다. # 만약 반복문 코드가 아래와 같이 바뀐다면 어떨까? for number in numbers: if number % 5 == 0: break print(number)..
# 파이썬의 반복문은 while 과 for가 제공된다. # while은 보통 "이터러블" 이라는 이름의 객체를 반복할 때 사용된다. # for는 "이터러블"이 아닌 배열의 형태를 띄고 있는 모든 객체를 반복할 수 있다. articles = [ {"id": 1, "subject": "첫 번째 글"}, {"id": 2, "subject": "두 번째 글"}, {"id": 3, "subject": "세 번째 글"} ] def print_article(article): id = article["id"] subject = article["subject"] print(id, subject) for article in articles: print_article(article) # while 반복문 보다 훨씬 더 깔끔..
# 지금까지의 모든 코드는 한번 실행하면 종료되는 방식이였다. # 하지만, 보통의 프로그래밍이라면, 하나의 작업이 한 번이상 반복이 되는 것들이 많다. # 예컨데, 게시판에 게시글을 등록하는 함수 하나가 있다고 해보자. # 게시판에 게시글을 한 번만 등록한다면, 현재까지 작성해왔던 코드로도 충분히 가능하다. # 하지만, 하나의 글을 한 번 이상 등록한다거나, 다른 내용의 글을 한 번 이상 등록되는 # 게시판이 있다면 우리가 써왔던 코드로는 충분하지 않다. # 이럴 때, 반복문을 사용하면 그럴싸한 게시판이 만들어질수도 있다. articles = [ {"id": 1, "subject": "첫 번째 글"}, {"id": 2, "subject": "두 번째 글"}, {"id": 3, "subject": "세 번..