관리 메뉴

공부 기록

[0808]정리 - Python 객체와 클래스 본문

playdata

[0808]정리 - Python 객체와 클래스

_JAEJAE_ 2021. 8. 8. 22:25

- 객체 : 속성(변수)과 행위(함수)로 구성된 대상이다. 즉, 변수와 함수의 묶음이며 클래스를 바탕으로 만들어진 결과이다.

 

- 클래스 : 객체의 공통된 속성과 행위를 변수와 함수로 정의한 것으로 객체를 만들기 위한 기본 틀이라고 할 수 있다.

 

 <클래스의 기본 구조>

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 자식클래스명(부모클래스명):
	...

이때 부모클래스는 먼저 선언되어 있어야 한다.

 

 

 

 

 

 

출처: 데이터 분석을 위한 파이썬 철저 입문(최은석) 

Comments