codestates / ds-blog

blog sharing for data science bootcamp course
2 stars 4 forks source link

[김지연]파이썬의 객체지향프로그래밍 #76

Open jiyeon-kim-ds opened 4 years ago

jiyeon-kim-ds commented 4 years ago

파이썬의 객체 지향프로그래밍(Object Oriented Programming)

객체지향프로그래밍으로서 클래스를 사용하는 방법에 대해 알아보자

객체지향프로그래밍(Object Oriented Programming)은 말그대로 객체를 우선시 하는 프로그래밍으로. 구체적이고 실제로 있는 것들의 관계 등을 표현할 수 있게끔 도와준다. 방대한 양의 코드를 수정하거나 유지보수 할 때 객체지향프로그래밍을 유용하게 이용할 수 있다.

파이썬의 객체지향프로그래밍에서는 클래스, 인스턴스, 객체, 메서드와 같은 표현들이 등장한다.

용어

추상화(abstract)

세상에 존재하는 것들은 많은 속성을 가지고 있다. 개를 예로 들자면 견종, 나이 , 털 색깔 등이 있을 것이다. 하지만 속성 중엔 견종, 털 색깔 같은 개를 나타내는데 중요한 데이터도 있지만 털의 갯수와 같은 그닥 중요하지 않은 정보도 있다. 이처럼 필요한 속성들을 이용하여 객체를 표현하는 것을 추상화라고 한다.

클래스의 정의

클래스 이름(여기서는 Writer)을 정의한다.

class Writer():
pass

인스턴스 속성 부여(생성자)

생성자는 init 함수를 사용하여 클래스에서 사용할 속성을 설정 해준다.

def __init__(self, name, title):
self.name = name
self.title = title

메소드(인스턴스 함수)

클래스 내부에서 사용하는 함수이다.

def writer_title(self):
print("{}의 대표작은 {}이다.".format(self._name, self._title))

객체 생성

인스턴스명 = 클래스명()을 사용하여 객체를 생성할 수 있다.

hemingway = Writer(‘Ernest Hemingway’, “노인과 바다”)
fitzgerald = Writer(‘F. Scott Fitzgerald, “위대한 개츠비”)
plath= Writer(‘Sylvia Plath’, “벨 자”)

완성 코드

class Writer:                  
    def __init__(self, name, title):
        self._name = name
    self._title = title

    def writer_title(self):
        print("{}의 대표작은 {}이다.".format(self._name, self._title))

hemingway = Writer('Ernest Hemingway', '노인과 바다')
fitzgerald = Writer('F. Scott Fitzgerald', '위대한 개츠비')
plath = Writer('Sylvia Plath', '벨 자')

hemingway.writer_title()

실행결과

Ernest Hemingway의 대표작은 노인과 바다이다.

jhan8823 commented 4 years ago

지연님 잘 써주셨습니다. 다만 독자층을 어떻게 설정하셨는지 궁금하네요. 코드를 스윽 읽고 바로 오오 하고 이해할 수 있는 독자층을 대상으로 하셨다면 간결하게 잘 작성해주셨습니다. 하지만 파이썬이 아직 미숙한 초심자에겐 다소 읽으면서 이해하는데 시간이 걸릴 수도 있을 것 같네요 (제 주관적인 의견입니다). 코드에 #을 활용하셔서 각 코드가 어떤 기능을 수행하는지를 조금 더 설명해주시고, OOP가 왜 방대한 양의 코드를 수정할 때 유용할지 지연님의 생각을 조금 더 녹여주시면 훌륭한 글이 될 것 같습니다. 고생하셨습니다. 2점

jiyeon-kim-ds commented 4 years ago

코멘트 감사합니다! 말씀해주신 부분들 보완하여 수정해보도록 하겠습니다😀