▧ 라이브러리 사용을 위한 클래스 / 모듈 / 패키지 이해
'클래스'와 '객체'는 처음 접했을 때, 이해하기 어렵다. 일단 글을 읽고 사용해보며 이해하기위해 노력해보자.
'쿠키틀'과 '쿠키'로 예를 들어보자면,
- 쿠키틀 : 클래스(class) (객체를 생성하기 위한 설계도 또는 틀)
- 쿠키틀로 만든 쿠키 : 객체(object)
=> 객체의 '속성'은 객체 안의 '변수'에 저장된다.
=> 객체의 이름 다음에 점을 찍고 변수 이름을 적는다.
cf) car.brand = "현대자동차"
=> 객체의 '메소드'는 객체안에 정의된 '함수'이다.
=> 객체의 '메소드'는 객체 이름 다음에 점을 찍어 호출한다.
cf) car.turn_on()
■ 클래스 / 객체 만들기
class 클래스명:
# 생성자 : 객체를 생성할 때 반드시 호출이 되고 제일 먼저 실행되는 일종의 메서드라고 생각하자
def __init__(self, 매개변수1, 매개변수2, ... ):
속성 초기화
def 메소드1(self, 매개변수1, 매개변수2, ... ):
메소드1 내용
def 메소드2(self, 매개변수1 매개변수2, ... ):
메소드2 내용
cf) self : 메소드를 호출한 객체를 받는다.
EX) 자동차 클래스와 객체
# 3가지 속성과 3가지 기능이 있는 자동차 객체를 찍어내기 위한 틀을 만든다.
# 속성 : brand, model, color
# 기능 : turn_on, turn_off, drive
# 클래스 만들기
class Car: # 클래스는 보통 대문자로 시작하는 경우가 많다.
def __init__(self, b, m, c):
self.brand = b # 이 객체의 브랜드는 b라는 매개변수에서 받아온다.
self.model = m
self.color = c
print(self.brand, self.model, self.color,'출고')
def turn_on(self):
print(self.brand,'시동을 겁니다.')
def turn_off(self):
print(self.brand,'시동을 끕니다.')
def drive(self):
print(self.brand,'주행중입니다.')
# 객체 생성하기
car1 = Car('현대자동차','쏘나타','화이트') # -> init 생성자에 매개변수를 전달
# self는 객체를 받는 매개변수라고 생각하면 된다.
car2 = Car('르노삼성','sm7','블랙')
현대자동차 쏘나타 화이트 출고
르노삼성 sm7 블랙 출고
car1.turn_on() # car1이라는 객체가 Car클래스 안의 함수 turn_on(self) self에 적용됨
car2.turn_off()
현대자동차 시동을 겁니다.
르노삼성 시동을 끕니다.
■ 객체의 메소드 목록 조회
dir(list) # list객체의 메소드 목록 조회하기 / directory
['__add__',
'__class__',
'__class_getitem__',
'__contains__',
'__delattr__',
'__delitem__',
'__dir__',
'__doc__',
'__eq__',
'__format__',
'__ge__',
'__getattribute__',
'__getitem__',
'__gt__',
'__hash__',
'__iadd__',
'__imul__',
'__init__',
'__init_subclass__',
'__iter__',
'__le__',
'__len__',
'__lt__',
'__mul__',
'__ne__',
'__new__',
'__reduce__',
'__reduce_ex__',
'__repr__',
'__reversed__',
'__rmul__',
'__setattr__',
'__setitem__',
'__sizeof__',
'__str__',
'__subclasshook__',
'append',
'clear',
'copy',
'count',
'extend',
'index',
'insert',
'pop',
'remove',
'reverse',
'sort']
■ 함수, 메소드 사용법
a = [1,2,3]
help(a.append) # help() 함수를 사용하여 리스트.append 메소드의 사용법을 출력한다.
Help on built-in function append:
append(object, /) method of builtins.list instance
Append object to the end of the list.
help(print) # print의 사용법 출력하기
Help on built-in function print in module builtins:
print(...)
print(value, ..., sep=' ', end='\n', file=sys.stdout, flush=False)
Prints the values to a stream, or to sys.stdout by default.
Optional keyword arguments:
file: a file-like object (stream); defaults to the current sys.stdout.
sep: string inserted between values, default a space.
end: string appended after the last value, default a newline.
flush: whether to forcibly flush the stream.
■ 모듈
=> 프로그램에서 공통적으로 사용되는 변수, 수, 클래스들을 별도로 모아서 사용
=> 데이터, 함수, 클래스 등을 모아서 하나의 파일로 저장해놓은 것
- 내장모듈 : 파이썬에서 제공하는 기본 모듈 cf) random, time등
- 사용자정의 모듈 : 사용자가 만든 모듈
- 외장모듈 : 다른 기업이나 단체에서 제공하는 모듈 cf) pip명령어로 설치
☞ import하여 사용한다
import 모듈명 -> 모듈 import
모듈명.함수명() -> 모듈의 함수 사용
모듈명.변수명 -> 모듈의 변수 사용
모듈명.클래스명() -> 모듈의 클래스 사용
☞ 모듈의 별칭 지정하여 사용하기
import 모듈명 as 별칭
별칭.함수명()
별칭.변수명
별칭.클래스명()
☞ 모듈의 일부만 가져오기
from 모듈명 import 함수명1,변수명1,클래스명1 -> 함수명1,변수명1,클래스명1만 import
함수명1() -> 모듈명을 붙이지 않고 바로 사용가능하다
변수명1
클래스명1()
☞ 모듈의 전체 가져오기
from 모듈명 import * -> 모듈의 전체 가져오기
함수명1() -> 모듈 내 모든 함수,변수,클래스를 모듈명 붙이지않고 사용가능
변수명1
클래스명1()
■ 패키지
=> 여러 모듈을묶어놓은 것 (폴더)
=> 도트(.)를 사용하여 파이썬 모듈을 계층적으로 표현
import | 사용 |
import 패키지명.디렉토리명.모듈명 | 패키지명.디렉토리명.모듈명.함수명() |
from 패키지명.디렉토리명 import 모듈명 | 모듈명.함수명() |
from 패키지명.디렉토리명.모듈명 import 함수명 | 함수명() |
☞ 패키지 사용하기
패키지 설치 -> pip install 패키지명
패키지 제거 -> pip uninstall 패키지명
설치된 패키지 목록 확인 -> pip list
※ 사용자정의 모듈 만들기
myCalc 파이썬 파일을 같은 경로에 만든다.

# myCalc
def get_plus(a,b):
return a+b
def get_minus(a,b):
return a-b
def get_multiply(a,b):
return a*b
def get_division(a,b):
if b != 0:
return a/b
else:
return 'zero division error'
■ 모듈 사용하기
import myCalc # 파일이 같은 경로내에 있을 때
print(myCalc.get_plus(1,2))
print(myCalc.get_minus(1,2))
print(myCalc.get_multiply(1,2))
print(myCalc.get_division(1,2))
3
-1
2
0.5
■ 별칭으로 사용하기
import myCalc as test
print(test.get_plus(1,2))
print(test.get_minus(1,2))
print(test.get_multiply(1,2))
print(test.get_division(1,2))
3
-1
2
0.5
■ 모듈의 이름을 붙이지 않고 사용하기
from myCalc import get_plus, get_minus # import한 함수만 사용가능하다
print(get_plus(1,2))
print(get_minus(2,4))
print(myCalc.get_multiply(3,4))
3
-2
12
from myCalc import *
print(get_plus(1,2))
print(get_minus(1,2))
print(get_multiply(1,2))
print(get_division(1,2))
3
-1
2
0.5
■ 파이썬 내장 모듈
▶ math : 수학적 연산과 관련된 함수들을 모아놓은 모듈
- ceil : 올림하여 정수로 만들기
- floor : 내림하여 정수로 만들기
- sqrt : 제곱근
- factorial : 팩토리얼
- pi : 원주율
import math
print(math.ceil(1.4))
print(math.floor(1.4))
print(math.sqrt(4))
print(math.factorial(3))
print(math.pi)
2
1
2.0
6
3.141592653589793
▶ random : 임의의 수를 발생시키거나 리스트의 요소 중 임의의 수를 선택하는데 사용되는 모듈
※ 랜덤 정수 구하기
- random.randint(시작값,끝값) : 시작값~끝값 사이의랜덤 정수 구하기(끝값 포함)
- random.randrange(시작값,끝값) : 시작값~끝값 사이의 랜덤 정수 구하기(끝값 미포함)
- random.randrange(끝값) : 0~끝값 사이의 랜덤 정수구하기(끝값 미포함)
import random
# 1~10 사이의 랜덤 정수 구하기
print(random.randint(1,10))
print(random.randrange(1,11))
# 0~10 사이의 랜덤 정수 구하기
print(random.randrange(11))
9
1
5
※ 랜덤 실수 구하기
- random.random() : 0~1 사이의 랜덤 실수 구하기
- random.uniform(시작값,끝값) : 시작값~끝값 사이의 랜덤 실수 반환(끝값 미포함)
import random
# 0~1 사이의 랜덤 실수 구하기
print(random.random())
# 1~10 사이의 랜덤 실수 구하기
print(random.uniform(1,11))
0.03895176307246251
3.8759407148138183
※ 시퀀스 데이터에서 무작위 요소 추출
- random.choice(시퀀스)
import random
print(random.choice([1,2,3,4,5]))
print(random.choice('가나다라마바사'))
print(random.choice(range(1,101)))
4
가
90
※ 시퀀스 데이터에서 무작위로 n개 요소 추출
- random.sample(시퀀스,n)
import random
print(random.sample([1,2,3,4,5], 2))
print(random.sample('가나다라마바사', 3))
print(random.sample(range(1,101), 6))
[1, 3]
['마', '사', '라']
[53, 88, 10, 63, 22, 91]
※ 시퀀스 데이터를 무작위로 랜덤하게 섞기
- random.shuffle(시퀀스) : 원본을 섞는다. 리턴값이 없다.
import random
a = [1,2,3,4,5,6,7,8]
random.shuffle(a)
print(a)
[7, 4, 8, 2, 6, 1, 3, 5]
▶ datetime: 날짜, 시간과 관련된 모듈 / 날짜 형식을 만들 때 주로 사용
※ 현재 날짜와 시각 가져오기
- datetime.datetime.now()
import datetime
datetime.datetime.now()
datetime.datetime(2023, 2, 24, 23, 21, 38, 274533)
※ 현재 날짜와 시각 출력
import datetime
now = datetime.datetime.now()
# year,month,day,hour,minute,second
print(now.year,'년',now.month,'월',now.day,'일', sep='')
2023년2월24일
※ 시간을 포멧에 맞게 출력하기
- datetime.datetime.now().strftime(포멧)
import datetime
now = datetime.datetime.now()
now.strftime('%Y.%m.%d %H:%M:%S')
'2023.02.24 23:23:31'
※ 특정 시간 이후의 날짜와 시간 구하기
- datetime.datetime.now() + datetime.timedelta(더할시간) : 특정 일, 시간, 분, 초 이후의 날짜와 시간 구하기
- timedelta에는 year로 계산하는 기능은 없음
import datetime
now = datetime.datetime.now()
now + datetime.timedelta(weeks=1,days=1,hours=1,minutes=1,seconds=1)
datetime.datetime(2023, 3, 5, 0, 24, 32, 319944)
import datetime
now = datetime.datetime.now()
# 현재로부터 100일 전의 날짜와 시간 구하기
now + datetime.timedelta(days=-100)
datetime.datetime(2022, 11, 16, 23, 23, 31, 319944)
▶ time: 시간 데이터를 다루기 위한 모듈
※ 현재 날짜와 시간 가져오기
- time.localtime()
- time.ctime()
import time
print(time.localtime())
tm = time.localtime()
print(tm.tm_year)
print(tm.tm_mon)
print(tm.tm_mday)
print(tm.tm_hour)
print(tm.tm_min)
time.struct_time(tm_year=2023, tm_mon=2, tm_mday=24, tm_hour=23, tm_min=31, tm_sec=21, tm_wday=4, tm_yday=55, tm_isdst=0)
2023
2
24
23
31
import time
time.ctime()
'Fri Feb 24 23:32:16 2023'
※ 일시정지
- time.sleep(초)
# 카운트 다운
# 실제 실행에 있어, sleep(초) 이후 출력한다.
print(3)
time.sleep(1)
print(2)
time.sleep(1)
print(1)
time.sleep(1)
print('start')
3
2
1
start
■ 파이썬 외부 모듈
- 외부모듈 설치하기 : pip install 모듈명
- 설치된 외부모듈 확인하기 : pip list

--> 외부모듈을 확인하고, 필요한 것을 install한다.
'Python 기초 공부' 카테고리의 다른 글
람다표현식 / map함수 (0) | 2023.02.24 |
---|---|
인수 전달 / 변수 사용 (0) | 2023.02.24 |
함수 만들기와 사용 (0) | 2023.02.24 |
딕셔너리(Dictionary) 활용해보기 (0) | 2023.02.20 |
딕셔너리(Dictionary) (0) | 2023.02.20 |