Python Object Oriented Programming (Boost course AI Lecture2)

박상우·2023년 1월 2일
0

Boost Course

목록 보기
1/7
post-thumbnail

객체 지향 프로그래밍

OOP

C++, Java, Python 등의 언어는 객체 지향 프로그래밍 언어
클래스라는 설계도를 바탕으로 Instance(객체)를 지정하여 사용
주체와 행동, 데이터를 중심으로 구현하는 것!

객체는 속성과 행동을 가지며 속성은 변수(Variable) 행동은 함수(method)로 포현됨

Example 1

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

Class의 함수명 짓는 방식은 CamelCase

Attribute

init, self와 함께 attribute를 추가
init은 객체 초기화 예약 함수

__main__, __add__, __str__ 

다음과 같은 함수는 magic method로 특수한 특성이 있음

Method

method 추가는 기존 함수와 같으나, self를 무조건 추가해주어야 함

Self

self는 생성된 인스턴스 자신을 의미

Example 2

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())

OOP Characteristics

상속

부모 클래스의 속성과 method를 자식 클래스가 사용하는 것

super()

부모 클래스의 속성을 받아오는 코드

다형성

같은 이름 메소드의 내부 로직을 다르게 작성
함수명은 같지만 세부적인 구현을 다르게 할 수 있음

가시성

객체 안의 모든 변수를 볼 필요가 없음
캡슐화, 정보 은닉이라고도 칭함
Class를 설계할 때 클래스간 간섭/정보 공유의 최소화

Decorater

First-class object

변수나 데이터 구조에 할당이 가능한 객체
파이썬의 함수는 모두 일급함수

Inner Function

함수내에 또 다른 함수가 존재

profile
세상아 덤벼라

0개의 댓글