본문 바로가기

Programming/공부

Python Class 정리!

클래스란? => 나타내고자 하는 개념의 설계도입니다! 

Python은 객체 지향 언어인데, 이 객체를 만들어주는 "붕어빵 틀"과 같은 역할을 Class가 맡고 있습니다.

이 Class를 통해 만들어진 실제 예시들을 인스턴스(instance)라고 합니다. 붕어빵이죠.

 

Class는 속성(attribute), 메서드(method)를 갖고 있습니다.

 

인스타그램 포스트를 예로 들어볼게요, 

인스타그램 게시물은

[작성자, 댓글, 좋아요, 내용] 등을 속성으로 갖고

그리고 [좋아요 누르기, 댓글 달기]와 같은 메서드가 가능하겠죠?

 

Class Post:
    def __init__(self, author, content):
        self.author = author
        self.content = content
        self.comment = []

Class는 항상 "생성자"라고 하는 가장 기본이 되는 __init__ '메서드'를 가집니다.

생성자란, 인스턴스가 처음 만들어질 때 어떻게 세팅될 것인지 결정하는 것입니다

 

*Class 정의 내에 self. 부분은 모두 "클래스의 속성"이라는 꼬리표라고 생각하면 좋습니다. 실제 데이터가 저장되는 이름이에요

*Class의 메서드 들은 paramete로 self를 반드시 가져야 합니다. 객체를 만들 때는 써줄 필요가 없습니다!

*클래스 내부에서 접근하려면 self.author, 외부에서 접근하려면 Post.author와 같이 사용해야 합니다!

 

위의 코드를 보자면,

__init__생성자는 parameter로 author, content를 받아옵니다.
self.author는 Post클래스의 속성 부분이고 앞으로 변수로 사용될 것이고, 
등호 우편의 author는 매개변수로, 어떤 값을 넣어줄지 결정하는 부분입니다!

 

실제로 사용하려면 

my_post = Post("Jin", "I love coding!")

와 같이 사용하게 되는데, 

 author는 Jin, content는 "I love coding"을 갖는 'Post' 클래스의 인스턴스,  'my_post'를 만든 겁니다!

self.comment는 뭐냐고요?

'댓글 리스트'를 만드려는데 처음 게시물을 올리면 댓글이 달려있지 않잖아요?

그래서 비워주는걸 Default로 하는 거니까 my_post의 매개변수도 필요 없는 거예요!