인공지능(AI) 기초 다지기: Python Object Oriented Programming(파이썬 객체 지향 프로그래밍 언어) (1)
인공지능(AI) 기초 다지기: Python Object Oriented Programming(파이썬 객체 지향 프로그래밍 언어) (1)
💻 객체 지향 프로그래밍 언어, Object Oriented Programming(OOP)
OPP 기반의 언어: JAVA, C++, C#
- 객체: 실생활에서 일종의 물건, 속성(Attribute)와 행동(Action)을 가짐
- OOP는 이러한 객체 개념을 프로그램으로 표현, 속성은 변수(variable), 행동은 함수(method)로 표현됨
- 파이썬 역시 객체 지향 프로그램 언어
💻 클래스와 인스턴스
- 클래스(class): 설계도에 해당
- 인스턴스(instance): 실제 구현체
💻 클래스 구현하기
축구 선수 정보를 클래스로 구현
class SoccerPlayer(object):
def __init__(self, name, position, back_number):
self.name = name
self.position = position
self.back_number = back_number
def change_back_number(self, new_number):
print("선수의 등번호를 변경합니다 : From %d to %d" % (self.back_number, new_number))
self.back_number = new_number
1. 클래스 선언하기
- python3에서 object(상속받는 객체명)는 생략해도 자동 상속이 됨
(+) 파이썬의 명명규칙(naming rule)
대부분의 OPP에서는 변수, 메서드, 클래스 및 하수 이름에 공백을 포함할 수 없음
명명규칙을 이용해 공백을 처리한다.
명명 규칙의 종류는 snake_case
, kebab-case
, camelCase
, PascalCase
가 있다.
- snake_case : 공백을 밑줄(_)로 대체
- kebab-case : 공백을 하이픈(-)으로 대체
- camelCase : 첫 단어를 제외하고 공백 다음의 첫 글자를 대문자로 표현
- PascalCase : 모든 단어의 첫 글자를 대문자로 표현
파이썬의 함수와 변수 이름에는 snake_case
, 클래스 이름에는 camelCase
를 사용한다.
참고
2. 속성(Attribute) 추가하기
__init__
: 객체 초기화 예약 함수self.
으로 객체의 초기 정보를 선언할 수 있음
(+) 파이썬에서
__
의 의미
특수한 예약 함수, 변수, 함수명 변경(맨글링)으로 사용
예) __main__
, __add__
, __str__
, __eq__
__str__
은 print() 함수를 쓸 때 출력할 것을 지정한다class SoccerPlayer(object): def __init__(self, name, position, back_number): self.name = name self.position = position self.back_number = back_number jinhyun = SoccerPlayer("Jinhyun", "MF", 10) print(jinhyun)
출력결과
class SoccerPlayer(object): def __init__(self, name, position, back_number): self.name = name self.position = position self.back_number = back_number def __str__(self): return "Hello, My name is %s. I play in %s in center " % \ (self.name, self.position) jinhyun = SoccerPlayer("Jinhyun", "MF", 10) print(jinhyun)
출력결과
3. 메소드 구현하기
- 반드시 self를 추가해야만 class 함수로 인정됨
4. objects(instance) 사용하기
Object 이름 선언과 함께 초기값 입력하기
💻 OOP Implementation Example
구현 가능한 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:
self.notes[self.page_number] = note
self.page_number += 1
else:
self.notes = {page : note}
self.page_number +=1
else:
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())
728x90
728x90