공부 기록
[0808]정리 - Python 객체와 클래스 본문
- 객체 : 속성(변수)과 행위(함수)로 구성된 대상이다. 즉, 변수와 함수의 묶음이며 클래스를 바탕으로 만들어진 결과이다.
- 클래스 : 객체의 공통된 속성과 행위를 변수와 함수로 정의한 것으로 객체를 만들기 위한 기본 틀이라고 할 수 있다.
<클래스의 기본 구조>
class 클래스명():
[변수1]
[변수2]
def 함수(self, 인자1, 인자2, ...):
...
...
- self : 클래스의 인스턴스(객체) 자신을 가리킴, 객체 생성 후 자신을 참조하는데 사용
<객체 생성 및 활용>
class Bicycle():
def move(self, speed):
print('지전거: 시속 {}킬로미터로 전진'.format(speed))
def turn(self, direction):
print('자전거: {}회전'.format(direction))
def stop(self):
print('자전거({}, {}): 정지'.format(self.wheel_size, self.color))
my_bicycle = Bicycle() # 클래스의 인스턴트인 my_bicycle 객체 생성
my_bicycle.wheel_size = 26 # 객체의 속성 설정
my_bicycle.color = 'black'
my_bicycle.move(30)
my_bicycle.turn('좌')
my_bicycle.stop()
class Bicycle():
def __init__(self, wheel_size, color): # 객체가 생성됨과 동시에 속성값 지정
self.wheel_size = wheel_size
self.color = color
def move(self, speed):
print('지전거: 시속 {}킬로미터로 전진'.format(speed))
def turn(self, direction):
print('자전거: {}회전'.format(direction))
def stop(self):
print('자전거({}, {}): 정지'.format(self.wheel_size, self.color))
my_bicycle = Bicycle(28, 'purple')
my_bicycle.move(30)
my_bicycle.turn('좌')
my_bicycle.stop()
<클래스에서 사용하는 변수>
- 클래스 변수 : 클래스 내에 있지만 함수 밖에서 '변수명 = 데이터' 형식으로 정의한 변수이며 클래스에서 생성한 모든 객체가 공통으로 사용할 수 있다. '클래스명.변수명' 형식으로 접근할 수 있다.
- 인스턴스 변수 : 클래스 내의 함수 안에서 'self.변수명 = 데이터' 형식으로 정의한 변수이며 클래스 내의 모든 함수에서 'self.변수명'으로 접근할 수 있다.
객체 생성 후 '객체명.변수명'하면 인스턴스 변수에 접근할 수 있다. 만약 클래스 내에 인스턴스 변수가 없고 클래스 변수만 있으면 '객체명.변수명' 했을 때 클래스 변수에 접근한다. '클래스명.변수명'으로도 접근할 수 있다.
<클래스에서 사용하는 함수>
- 인스턴스 메서드 : 각 객체에서 개별적으로 동작하는 함수를 만들고 싶을 때 사용하는 함수이다. 인스턴스 메서드는 함수를 정의할 때 첫 인자로 self가 필요하다. '객체명.메서드명(인자...)'로 호출 가능하다.
- 정적 메서드 : 클래스 안에 있긴 하지만 클래스나 클래스의 인스턴스와는 무관하게 독립적으로 동작하는 함수를 만들고 싶을 때 사용하는 함수이다. 함수를 정의할 때 인자로 self를 사용하지 않으며 정적 메서드 안에서는 인스턴스 메서드나 인스턴스 변수에 접근할 수 없다. 함수 앞에 @staticmethod(데코레이터)를 선언해 정적 메서드임을 표시한다. '클래스명.정적메서드명(인자...)'으로 호출 가능하다.
- 클래스 메서드 : 클래스 변수를 사용하기 위한 함수이다. 함수를 정의할 때 첫 인자로 클래스를 넘겨받는 cls가 필요하며 이를 이용해서 클래스 변수에 접근해야 한다. 함수 앞에 @classmethod(데코레이터)를 지정해야 한다. '클래스명.클래스메서드명(인자...)'로 호출 가능하다.
<클래스 상속>
- 클래스 상속 : 이미 만들어진 클래스의 변수와 함수를 그대로 이어받고 새로운 내용만 추가해서 사용하는 것을 말한다.
class 자식클래스명(부모클래스명):
...
이때 부모클래스는 먼저 선언되어 있어야 한다.
출처: 데이터 분석을 위한 파이썬 철저 입문(최은석)
'playdata' 카테고리의 다른 글
ML(0809_day4) - 실습_Concrete Compressive Strength Dataset (0) | 2021.08.09 |
---|---|
ML(0809_day4) - 교차 검증 예제 (0) | 2021.08.09 |
ML(0806_day3) - 실습_Predict survival on the Titanic - using scikit-learn (0) | 2021.08.06 |
ML(0806_day3) - 실습_캘리포니아 주택 가격 예측하기(데이터 인코딩) (0) | 2021.08.06 |
ML(0806_day3) - 실습_Predict survival on the Titanic - using pandas (0) | 2021.08.06 |