Day_2 03. Python Object Oriented Programming

작성일

1 분 소요

Python Object Oriented Programming

1. 객체지향 프로그래밍

  • Object-Oriented Programming, OOP
  • 객체: 실생활에서 일종의 물건
    • 속성(Attribute)와 행동(Action)을 가짐
  • OOP는 이러한 객체 개념을 프로그램으로 표현
    • 속성은 변수(variable), 행동은 함수(method)로 표현됨
  • 파이썬 역시 객체 지향 프로그램 언어

  • OOP는 설계도에 해당하는 클래스(claass)실제 구현체인 인스턴스(instance)로 나눔

2. Objects in Python

2.1 Class

  • class 선언, object는 python3에서 자동 상속

  • 변수와 Class명 함수명은 짓는 방식이 존재
  • snake_case : 띄어쓰기 부분에 “_“를 추가
  • CamelCase: 띄어쓰기 부분에 대문자
  • Attribute 추가는 init, self와 함께!
    • __init__은 객체 초기화 예약 함수
class BaseballPlayer(object):
  def __init__(self, name, position, back_umber):
    self.name = name
    self.position = position
    slef.back_number = back_number
  • __는 특수한 예약ㄱ 함수나 변수 그리고 함수명 변경(맨글링)으로 사용
  • str : 프린트문을 객체에 사용하면 함수가 실행

  • 객체는 클래스로부터 비슷하게 생성되지만 메모리주소는 다름

2.2 Method

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

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

3. 객체 지향 언어의 특징

3.1 상속 (Inheritance)

  • 부모 클래스로 부터 속성과 Method를 물려받은 자식 클래스를 생성 하는 것
  • super() : 부모클래스를 의미

3.2 다형성 (Polymorphism)

  • 같은 이름 메소드의 내부 로직을 다르게 작성
  • Dynamic Typing 특성으로 인해 파이썬에서는 같은 부모클래스의 상속에서 주로 발생함
  • 중요한 OOP의 개념 그러나 너무 깊이 알 필요 없음

3.3 가시성 (Visibility)

  • 객체의 정보를 볼 수 있는 레벨을 조절하는 것
  • 누구나 객체 안에 모든 변수를 볼 필요가 없음
    • 객체를 사용하는 사용자가 임의로 정보 수정
    • 필요 없는 정보에는 접근 할 필요가 없음
    • 만약 제품으로 판매한다면? 소스의 보호
  • __items : 언더바 2개를 사용해 private 변수 선언
  • 접근하기 위해서는 @property 데코레이터 사용 : 함수를 변수처럼 접근 할 수 있게 해줌

4. decorate

4.1 First-class objects

  • 일등함수 또는 일급 객체
  • 변수나 데이터 구조에 할당이 가능한 객체
  • 파라메터로 전달이 가능 + 리턴 값으로 사용
  • 파이썬의 함수는 일급함수

4.2 Inner function

  • 함수 내에 또 다른 함수가 존재
  • closures : inner function을 return값으로 반환

4.3 decorator function

  • 복잡한 클로져 함수를 간단하게!
def star(func):
  def inner(*args, **kwargs):
    print("*" * 30)
    func(*args, **kwargs)
    print("*" * 30)
  return inner
  
@star
def printer(msg):
  print(msg)
printer("Hello")

***************************************
Hello
***************************************

댓글남기기