Day_2 03. Python Object Oriented Programming
작성일
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
***************************************
댓글남기기