본문 바로가기

컴린이 탈출기/Python

[Python] OOP(Object Oriented Programming)

반응형

 


<부스트캠프 AI Tech> 최성철 교수님의 Python 강의를 정리한 내용입니다.



객체 지향 프로그래밍 (OOP, OO)

- 주체들의 행동과 데이터를 중심으로 프로그램 작성 후 연결

- 객체 : 속성(= 변수, Variable)과 행동(=함수, method)을 가짐.

- 객체 지향 프로그래밍에서는 설계도에 해당하는 클래스(class)와 실제 구현체인 인스턴스(instance)가 있음.

 

Class

+ 변수와 Class명, 함수명은 짓는 방식이 존재함

1) snake_case : 띄어쓰기 부분에 "_" 추가 / Python 함수, 변수명에 사용

2) CamelCase : 띄어쓰기 부분에 대문자 / Python Class 명에 사용

 

- __는 특수한 예약 함수나 변수, 함수명 변경(Mangling)에 사용

ex. __main__,  __str__

- 메서드 선언에 사용되는 self는 생성된 인스턴스 자신을 이야기함.

 

Inheritance (상속)

: 부모 클래스로부터 속성과 method를 물려 받은 자식 클래스를 생성하는 것

 

Polymorphism (다형성)

: 같은 이름의 메소드의 내부 로직을 다르게 작성. (같은 이름, 목적에 따라 다른 구현)

class Person:
	def __init__(self, name):
    	self.name = name
        
    def work(self):
    	print(self.name + 'works hard')
        
class Engineer(Person):
	def work(self):
    	print(self.name + 'develops something')

 

Visibility

: 객체의 정보를 볼 수 있는 레벨을 조절하는 것. (누구나 객체 안의 모든 변수를 볼 필요는 없기 때문에!)

+ Encapsulation (캡슐화) : class를 설계할 때, 클래스 간 간섭/정보 공유의 최소화.

ex. 

class Inventory(object):
	def __init__(self):
    	self.__items = []

ㄴ items는 Private 변수로, 타객체가 접근하지 못함

ㄴ 접근하게 하는 법? decorator

 

decorate

+ first-class objects (일등 함수 or 일급 객체)

: 변수나 데이터 구조에 할당이 가능한 객체. 파라미터로 전달 가능하고, return 값으로도 사용할 수 있음. Python의 함수는 일급 함수. (ex. map함수의 파라미터로 함수 전달)

 

 + inner function

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

- closures : inner function을 return 값으로 반환

def print_msg(msg):
	def printer():
    	print(msg)
        
    return printer

 

+ decorator
: 복잡한 closure 함수를 간단하게

def star(func):
	def inner(*args, **kwargs):
    	print('*' * 5)
        func(*args, **kwargs)
        print('*' * 5)
        
    return inner
    
@star
def printer(msg):
	print(msg)

printer('Hi')
#>> *****
#>> Hi
#>> ***** 

+ comlini8-8.tistory.com/51

 

[TIL] Python 클래스의 메서드(method) + 데코레이터(decorater)

[주절주절] 코드 짜기 싫어서.. 괜히 딴 거 공부..🎭 [Today I Learned] # 클래스 속성과 인스턴스 속성 클래스의 속성에는 클래스 속성과 인스턴스 속성 두 가지 종류가 있다. 1) 클래스 속성 class Person

comlini8-8.tistory.com

 

반응형