본문 바로가기

Python

(5)
OOP - 주어진 문제 안에서 클래스를 식별하는 방법 OOP에서 개발자가 해야할 일은 클래스를 설계하는 것입니다. 클래스를 설계하려면 구현하고자 하는 현실의 객체의 특성을 파악해야합니다. 그리고 객체의 특성을 파악하기 전에 객체를 식별해야합니다. 무슨 얘기냐면, 개발자가 프로그램을 만들 때에는 해결하고자 하는 문제가 있습니다. 고객, 회사 동료, 자기 자신이 가지고 있는 문제를 프로그램을 통해서 해결합니다. 프로그램으로 문제를 해결하려면 우선은 어떤 문제가 있는지 파악을 해야합니다. 예를 들자면, 편의점에 진열되어 있는 식품들의 종류과 개수를 파악하는 프로그램을 만들고자 한다면(problem description, 이 과제에 대해 어떤 식으로 프로그램을 만들지, 문제에 대한 설명에서 프로그램과 관련된 요소를 추출해야합니다. 이를 problem stateme..
객체 지향 프로그래밍의 장점 OOP의 장점은 대표적으로 3개 있습니다. modularity OOP에서는 클래스를 사용해서 객체를 구현합니다. 클래스는 청사진 역할을 하는데, 이러한 청사진은 다른 프로그램, 다른 클래스들과는 독립적으로 움직입니다. 즉, 프로그램 전체를 고치지 않고 클래스 하나만 변경하는 것으로 쉽게 프로그램을 수정할 수 있습니다. 각각의 클래스, 정확히는 클래스로부터 만들어진 인스턴스는 서로 상호작용하지만 각각의 클래스는 각자만의 특정한 목적을 가지고 움직이며, 이 때도 서로는 독립적으로 움직입니다. 각각의 class는 레고라고 생각하면 편합니다. reusablity class는 청사진 역할을 합니다. class로 여러 개의 instance를 만들 수 있고, 이 class는 독립적이므로 다른 프로그램에서 재사용이 가..
객체 지향 프로그래밍이란 udemy의 강의를 듣고 정리한 내용입니다. 객체 지향 프로그래밍은 객체를 중심으로 해서 소프트웨어 설계를 하는 프로그래밍 패러다임입니다. 프로그래밍 패러다임이란, 프로그램을 만들기 위해 코드를 작성하는 방법을 뜻한다고 보면 됩니다. (패러다임은, 어떤 한 시대 사람들의 견해나 사고를 근본적으로 규정하고 있는 테두리로서의 인식의 체계, 또는 사물에 대한 이론적인 틀이나 체계를 의미하는 개념입니다. 한 시대의 사회 전체가 공유하는 이론이나 방법, 문제의식등의 체계를 뜻합니다. 예를 들어 천동설이 진리로 받아들여지던 시기에 다른 모든 천문 현상은 천동설의 테두리에서 설명되었습니다.) 프로그래밍 패러다임은 명령형((Imperative), 함수형(Functional), 선언형(Declarative)…등이 있습니..
Faker seed를 사용해봤습니다 Faker.seed(0)는 같은 데이터 셋을 편리하게 세팅하게 해주는 메소드다. 정확히는 라이브러리 전체에서 생성되는 난수 시퀀스에 영향을 주는 난수 생성기를 시드하는데 사용된다. 시드 값을 설정하면 생성된 난수 시퀀스가 프로그램의 여러 실행에서 동일하게 유지된다. 정말 그런지 비교해보자. 프로그램을 종료하고 다시 실행해서 같은 seed번호를 설정하면 같은 난수 시퀀스가 설정된다. 예를 들어 seed(0)을 하고 fake.name을 for문으로 5번 반복해서 리스트를 만들고 프로그램을 종료하고 다시 시작해서 같은 방식으로 생성하면 같은 결과가 나온다. seed(0)에서 생성된 fake.name은 항상 ['Norma Fisher', 'Jorge Sullivan', 'El..
Python에서 super() 함수의 이해 super()를 호출해서 리턴되는 임시객체는 클래스 메소드처럼 부모 클래스의 메소드만을 호출할 수 있도록 해주는 proxy 객체다. 이때 부모 클래스의 인스턴스는 생성되지 않는다. 부모 클래스의 인스턴스(a=Animal()했을 때 생성되는 a, 즉 인스턴스)와 super()를 호출했을 때 생성되는 임시객체는 다음과 같은 차이점이 있다. 임시객체는 super()로 호출된다. 즉, 자식 클래스를 정의한 코드 안에서만 반환하도록 되어있다. 내부적으로 파이썬이 method resolution order(MRO)를 구현하기 위해 사용된다,(MRO는 들어는 봤지만 아직 공부하지 않았기 때문에 찾아보도록 한다.) 클래스의 인스턴스는 인스턴스 메소드에 접근할수 있지만 임시객체는 클래스 그 자체(class Animal:..