OOP, Module, Package

허진녕·2022년 9월 25일
0

AI_TECH

목록 보기
1/4
  • AI_TECH Week1 Day1
  • 이 포스팅에서는 코드 작성법을 다루지 않습니다.

객체지향 프로그래밍

OOP (Object Oriented Programming)

OOP의 핵심은 class를 이용하여 instance를 구현하는 것이다.

여기서 말하는 class와 instance의 관계는 레시피와 요리의 관계라고 볼 수 있다.

음식 만드는 방법(객체를 생성하는 방법)은 레시피(class)에 나와 있지만 실제로 만들 때는 재료 양(속성)을 바꿀 수 있다.

즉, 클래스 안에는 객체를 생성할 때 필요한 내용들이 있지만 객체를 선언할 때 객체의 속성은 바꿀 수 있다.

인스턴스와 객체

a = Recipe() 라는 코드가 있을 때,
a는 객체(object)라고 하고, a는 Recipe 클래스의 인스턴스라고도 부른다.
즉, class와의 관계를 설명할 때는 인스턴스, a를 지칭할 때는 객체라고 부른다.

메서드(method)와 함수(function)도 객체와의 관계로 구분할 수 있다.
<참조> https://wikidocs.net/28

OOP의 특징 (상속, 다형성, visibility)

상속 (inheritance)

  • 부모(상위) 클래스의 attribute, method를 자식(하위) 클래스가 접근 가능하도록 해줌

다형성 (Polymorphism)

  • 같은 이름의 메서드를 내부 로직에서 다르게 사용하는 것을 말함
  • ex) 'Animal' 이라는 클래스를 상속한 'Dog' 클래스와 'Cat' 클래스는 talk() 라는 동일한 메서드가 있지만, 'Dog' 클래스에서는 talk의 반환값으로 '멍멍' 이 반환되고, 'Cat' 클래스에서는 '야옹'이 반환된다.

Visibility

  • 객체의 정보에 대한 접근 정도를 제한하는 것을 의미함
  • 캡슐화 혹은 정보 은닉이라고 부름
  • decorator를 활용하여 사용 가능

Tip. 파이썬의 모든 함수는 일급함수(first-class object)

  • 일급함수는 변수나 데이터 구조에 할당할 수 있는 객체
  • 객체를 파라미터나 반환값으로 사용 가능

Module & Package

Module

  • ~.py 형태로 저장
  • import를 이용하여 호출
  • from, import를 이용하여 호출 범위 설정 가능

Package

  • 모듈이 모여서 package가 됨
  • 페키지를 대중에게 공개하면 Project라고 함
profile
Hello!

0개의 댓글