부스트 캠프 ai tech 1주 3일차 Python Basic for AI (7)
11. Object Oriented Programming (객체 지향적 프로그래밍, OOP)
객체(Object)란?
프로그램에서 사용되는 데이터 또는 식별자에 의해 참조되는 공간, 독립된 단위를 의미한다- OOP는 여러개의 독립된 객체들의 모임으로 프로그램을 구성하는것을 이야기한다
11.1 Object in Python
Python에서의 객체는 class로 선언이 가능하다
class는 속성(Attribute)와 명령어(Method)을 가지고 있다
- Attribute
해당 class가 가지고 있는 특별한 변수를 말한다. 이 변수는 다른 객체가 될 수도 있다. __init__(self) 메서드로 속성을 미리 설계할 수 있다 - Method
해당 class가 내장하고 있는 함수들을 지칭한다. 메서드는 class 안에 기존 함수와 같은 방식으로 정의가 가능하나, 반드시 self를 추가해야 메서드로 인정된다. 또한 python에는 특별한 메서드 들이 존재한다
- Attribute
class의 이름 선언과 함께 __init__메서드에 parameter 값들을 입력하면 객체를 생성 할 수 있다
class_name.method_name()과 같은 형식으로 객체의 메서드를 호출 할 수 있다
예시 축구선수
1 | class SoccerPlayer(object): |
11.1.1 Special method
- class에는 __init__ 과 같이 특정한 일을 전담하는 정해진 메서드들이 존재하고 이것들을 Special method라고 부른다
- class 내부에 Special method를 정의하면 객체간의 operator 연산 등 여러가지를 할 수 있다.
- 자세한 내용은 링크로 남기고 생략한다.
- 여러가지 스페셜 메서드
11.2 OOP의 특징
Visibility
가시성객체의 정보를 볼수 있는 레벨을 조절한다
- 유저에게 필요한 부분은 보여주고(
추상화
), 노출할 필요가 없는 정보들은 숨긴다(캡슐화
) - __ 를 속성이나 메서드 앞에 붙여서 객체 외부에서 접근할 수 없게 한다
결론 : docstring 잘 쓰는게 중요하다
Inheritance
상속- 부모클래스로부터 속성과 Method를 물려받은 자식클래스를 생성 하는 것을 말한다
- super를 통해 부모클래스의 메서드를 호출 할 수 있다
- 코드의 재사용이 목적이다
polymorphism
다형성- 같은 이름의 메서드의 내부로직을 다르게 사용할 수 있다.
- 자식클래스에서 메서드를 재정의(overiding)하여 새로 맞춰서 사용이 가능하다
1 | class TeamAPlayer(SoccerPlayer): |
참고 자료
부스트 캠프 ai tech 1주 3일차 Python Basic for AI (7)
https://kyubumshin.github.io/2022/01/19/boostcamp/week/week1/python-7/