본문 바로가기
일일일/개인프로젝트👩‍💻

네이버 pre-course - 2. Python OOP

by 전클로네 2021. 11. 22.

※ 해당 글은 네이버 부스트캠프 pre course 강의를 시청하며 작성한 내용입니다.

잘못 작성된 내용이 있을 수도 있습니다.

 

1. Python OOP 개요


- 파이썬은 객체 지향 프로그램 언어

- 객체지향 = Object-Oriented Programming

- 객체란 속성과 행동을 가진 일종의 물건 => 변수와 함수를 말함

 

OOP의 표현

- OOP는 객체의 개념을 프로그램으로 표현함

- 속성 = 변수(Variable)

- 행동 = 함수(method) 로 표현

 

OOP는

- 클래스(class)와 실제 구현체인 인스턴스(instance)로 나눔

 

 

2. OOP의 특성 (상속 추상 캡슐 다형)


상속

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

 

다형성(Polymorphism)

- 다형성은 같은 부모클래스의 상속에서 주로 발생함 (원인 : Dynamin Typing 특성 때문에)

- 같은 이름 메소드의 내부 로직을 다르게 작성

 

가시성(visibility)

- 객체의 정보를 볼수 있는 레벨을 조절하는 것

- 누구나 객체 안에 모든 변수를 볼 필요가 없음

 

캡슐화(Encapsulation)

- 클래스 설계시, 클래스 간 간섭/정보공유의 최소화

 

 

3. Python naming rule


클래스,변수,함수명은 짓는 방식이 정해져 있음

• 스네이크 케이스(snak_case) - 함수/변수명

카멜케이스(CamelCase) - Class 명

 

 

4. Python 객체 초기화


객체 초기화 선언시  __init__과 self를 같이 쓴다

class SoccerPlayer(object):
	def __init__(self, name, position, back_number):
    	self.name = name
        self.position = position
        self.back_number = back_number

 

 

5. Python 함수명 변경(맨글링)


기존 적은 함수를 바꿔서 작성하는 것을 말함

__ 는 특수한 예약 함수/ 면수/함수명 변경으로 사용

class SoccerPlayer(object):
	def __str__(self):
    	return "Hello, My name is %s. I play in %s in center " % \ (self.name, self.position)

 

 

6. Python method 구현하기


메소드 추가는 기존 함수와 같으나, 반드시 self를 추가해야만 class 함수로 인정됨

class SoccerPlayer(object):
	def change_back_number(self, new_number):
    	print("선수의 등번호를 변경합니다 : From %d to %d "% \(self.back_number, new_number))
        self.back_number = new_number

 

 

7. Python 인스턴스 사용하기


Object 이름 선언과 함께 초기값 입력하기

class SoccerPlayer
	def instanCreate(self, name)
    	jihyun = SoccerPlayer("jihyun", "MF", 10)

 

 

8. Python 일급 함수(First-class objects)


- 일등함수 또는 일급 객체

- 함수를 변수로 선언, 파라미터로 전달 가능 + 리턴 값 사용

class example
	def square(x):
    return x*x
    
    f = square //함수를 변수로 사용
    
    def formula(method):
    	return method //함수를 parameter로 사용

 

 

9. Python inner function


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

class example
	def print_mst(mst):
    	def printer()
        	print(msg)
    	printer()

 closures : inner function 을 return 값으로 반환

class example
	def print_mst(mst):
    	def printer()
        	print(msg)
    	return printer()

 

 

10. Python decorator function


복잡한 클로져 함수를 간단하게 함

 

 

추가 (클래스, 객체, 인스턴스)


참고 사이트 https://blog.naver.com/PostView.nhn?blogId=good_ray&logNo=222069343755

 

[Java] 클래스, 객체, 인스턴스 차이 구분

클래스 - 일종의 설계도로써 예를들자면, 휴대폰의 특성과 기능들을 정의해놓은 것 - 연관되어있는 메소드...

blog.naver.com

• 클래스

일종의 설계도 , 특성과 기능들을 정의 해놓은것

 

객체

클래스안에서 구현해야할 대상

예를들면 선언해 놓은 변수

 

• 인스턴스

객체가 구현되어진 실체

실제로 메모리로 할당된 상태

개념적으로 인스턴스는 객체와 같거나 포함된다고도 볼 수 있음

728x90

댓글