Python Object Oriented Programming

wldnjswldnjs·2023년 1월 5일
0

python

목록 보기
7/8
  1. Attribute 추가는 __init__, self와 함께

  2. __init__은 객체 초기화 예약 함수

  3. __는 특수한 예약 함수나 변수 그리고 함수명 변경(맨글링)으로 사용
    -> ex) __main__, __add__, __str__

1. __init__

  • 틀만 같은 서로 다른 객체 생성

  • 객체의 메모리 주소 출력

2. __str__

  • 문장 출력

3.__add__

4. method 구현하기

  • method(Action) 추가는 기존 함수와 같으나, 반드시 self를 추가해야만 class 함수로 인정
  • self : 생성된 instance

5. 구현 가능한 OOP 만들기 - 노트북

  • Note를 정리하는 프로그램
  • 사용자는 Note에 뭔가를 적을 수 있다.
  • Note에는 Content가 있고, 내용을 제거할 수 있다.
  • 두 개의 노트북을 합쳐 하나로 만들 수 있다.
  • Note는 Notebook에 삽입된다.
  • Notebook은 Note가 삽입 될 때 페이지를 생성하며, 최고 300페이지까지 저장 가능하다.
  • 300페이지가 넘으면 더 이상 노트를 삽입하지 못한다.

class Note(object):
    def __init__ (self, content = None):
        self.content = content
    
    def write_content(self, content):
        self.content = content
        
    def remove_all(self):
        self.content = ''
        
    def __add__(self, other):
        return self.content + other.content
    
    def __str__(self):
        return self.content
class Notebook(object):
    def __init__(self, title):
        self.title = title
        self.page_number = 1
        self.notes = {}
        
    def add_note(self, note, page = 0):
        if self.page_number < 300:
            if page == 0:     # page 값을 따로 입력하지 않으면
                self.notes[self.page_number] = note
                self.page_number += 1
            else:             # page를 입력했을 때, 그 페이지에 노트를 저장
                self.notes = {page : note}
                self.page_number += 1
            elif:
                print('Page가 모두 채워졌습니다.')

    def remove_note(self, page_number):
        if page_number in self.notes.keys():
            return self.notes.pop(page_number)
        else:
            print('해당 페이지는 존재하지 않습니다.')
            
    def get_number_of_pages(self):
        return len(self.notes.keys())

0개의 댓글