01. 클래스와 객체의 정의
객체란?
현실 세계에 있는 물건을 컴퓨터 프로그램 안에서 표현 한 것이라 이해하면 쉽다.
클래스란?
객체를 만들기 위한 설계도라고 이해하면 쉽다. 예를 들어 "자동차" 라는 설계도를 만들어 놓고, 그 설계도를 이용한다면
여러대의 자동차를 만들 수 있는 것 이며, 이 설계도 ( 클래스 ) 안에는 자동차의 특징(속성) 과 행동(메서드) 이 정의 되어 있는 것이다.
조금 더 쉽게 현실에 비유하자면 다음과 같다.
클래스 : 자동차 설계도
객체 : 그 설계도를 바탕으로 만든 실제 자동차
속성 : 객체의 특징, 예를들어 자동차의 색상이나 브랜드 등
메서드 : 객체의 행동, 예를 들어 자동차가 달리거나 멈추는 것을 뜻함
이렇기에 클래스만 있으면 언제든 필요할 때 마다 객체를 원하는 만큼 만들 수 있는 것이고 각각의 속성과 메서드를 어떻게 주느냐에 따라 다양하게 만들 수 있게 된다.
ex ) 계산기 프로그램의 경우 버튼을 만드는 클래스만 있으면 그 안에 들어가는 숫자의 값 (속성) 만 다르게 하여
여러 버튼을 손 쉽게 만들 수 있게 된다.
02. 클래스를 이용해 객체를 만들기 예제
▸ 원의 면적을 계산하는 Circle 클래스에 원의 둘레를 계산하는 circleC() 함수를 추가
class Circle:
pi = 3.14 # 원주율(pi) 값을 클래스 속성으로 정의
def circleA(self, radius): # 원의 면적을 계산하는 메서드(행동)
return self.pi * radius * radius # 원의 면적 = pi * 반지름^2
def circleC(self, radius): # 원의 둘레를 계산하는 메서드(행동)
return 2 * self.pi * radius # 원의 둘레 = 2 * pi * 반지름
c1 = Circle() # Circle 클래스의 인스턴스를 생성
# 인스턴스 : 설계도를 바탕으롤 만들어진 실제 객체
print('원의면적: ', c1.circleA(7)) # 반지름이 7인 원의 면적을 계산하고 출력
print('원의둘레: ', c1.circleC(7)) # 반지름이 7인 원의 둘레를 계산하고 출력
[ 참고사항 ]
객체와 인스턴스는 거의 동일한 개념으로 사용 되나 조금 더 구체적으로 설명하면 다음과 같다.
객체 : 프로그래밍에서 데이터와 그 데이터를 처리하는 방법을 캡슐화한 하나의 단위
인스턴스 : 특정 클래스에서 만들어진 객체를 가리키는 말
▸직사각형의 넓이와 둘레를 계산하는 클래스
class Rectangle:
def __init__(self, width: float, height: float):
self.width = width # 직사각형의 가로 길이
self.height = height # 직사각형의 세로 길이
def area(self) -> float:
"""직사각형의 넓이를 계산하는 메서드"""
return self.width * self.height
def perimeter(self) -> float:
"""직사각형의 둘레를 계산하는 메서드"""
return 2 * (self.width + self.height)
# Rectangle 클래스의 인스턴스 생성
rect = Rectangle(5, 10)
# 직사각형의 넓이를 계산하고 출력
print('직사각형의 넓이:', rect.area())
# 직사각형의 둘레를 계산하고 출력
print('직사각형의 둘레:', rect.perimeter())
03. 모듈
모듈은 변수, 함수, 클래스들을 모아놓은 파일이다. 모듈을 사용하면 코드를 여러 파일로 나누어 관리하기 용이하고 코드의 재 사용성을 높일 수 있다. 파이썬에서 모듈은 파일 단위로 나뉘며, 하나의 파일이 곧 하나의 모듈인 셈이다.
모듈은 내장 모듈과 사용자 정의 모듈 두가지로 분류 된다.
내장 모듈 : 파이썬 설치 시 이미 설치된 모듈 ( randim.py , math.py 등 )
사용자 정의 모듈 : 필요 할 때마다 직접 만들어서 사용
▸ 모듈 사용방법 예제
# rectangle.py 파일
class Rectangle:
"""직사각형의 넓이와 둘레를 계산하는 클래스"""
def __init__(self, width: float, height: float):
self.width = width # 직사각형의 가로 길이
self.height = height # 직사각형의 세로 길이
def area(self) -> float:
"""직사각형의 넓이를 계산하는 메서드"""
return self.width * self.height
def perimeter(self) -> float:
"""직사각형의 둘레를 계산하는 메서드"""
return 2 * (self.width + self.height)
1. 컴퓨터 내에 rectangle.py 라는 파일 을 생성한다.
2. rectangle.py 파일 안에 Rectangle 클래스를 넣어 놓는다. 이는 직사각형의 넓이와 둘레를 계산하는 클래스(설계도) 이다.
클래스를 넣어 두었다면 이는 곧 모듈이 된다.
3. 이 파일이 컴퓨터의 특정 폴더 안에 있으면 다른 python 파일에서 언제든지 모듈을 불러와 사용 할 수 있다.
다만 이 파일이 Python이 인식 할 수 있는 경로에 있어야 한다.
# main.py 파일
# rectangle 모듈을 import
import rectangle
# Rectangle 클래스의 인스턴스 생성
rect = rectangle.Rectangle(5, 10)
# 직사각형의 넓이를 계산하고 출력
print('직사각형의 넓이:', rect.area())
# 직사각형의 둘레를 계산하고 출력
print('직사각형의 둘레:', rect.perimeter())
4. 이 후 다른 파일에서 코드를 짤 때 직사각형의 넓이와 둘레를 계산하여야 하는 일이 생겼다면 이전에 생성 해 두었던 rectangle.py 모듈 불러와 손 쉽게 사용 하면 된다.
5. rectangle.py 를 불러오려면 import 를 사용하여 가져 올 수 있다.
6. 가져온 rectangle 모듈 안에 Rectangle 클래스 인스턴트를 생성 하고 넓이와 둘레를 계산하면 된다.
# 모듈안에 클래스를 불러오려면 . 을 사용하여 불러 오면 된다 ▸ rectangle.Rectangle