이 글은 24.01.09에 본인 벨로그에 작성했던 글을 옮겨 온 것이다.
패키지
- 패키지란?
=> 간단히 말해, 여러 모듈들을 용도, 타입 등 관련 있는 카테고리로 묶어놓은 것.
=> 같은 이름의 모듈을 구별하는 용도로도 사용한다.
# 각각 cal_for_int, cal_for_float라는 패키지에 add라는 모듈을 만들었다.
# 모듈 이름과 쓰임새는 같으나 적용 대상이 다르다(int와 float)
# 이렇게, 같은 이름의 모듈을 구별해줄 때에 사용할 수 있다.
# input
from cal_for_int import add
print(add.add(1.2,2))
from cal_for_float import add
print(add.add(1.2, 2))
==============================
# output
3
3.2
- 패키지를 어떤 경로에서든 사용할 수 있게 하는 것이 site-pakages라는 디렉토리다.
=> 해당 디렉토리에 패키지를 두면 어디서든 사용 가능하다.
자주 쓰는 외부 모듈
- math모듈
fabs(x) : x의 절대값(실수) // ceil(x) : x 올림 // floor(x) : x 내림
trunc(x) : x 소수점 이하 버림 // gcd(x, y) : x와 y의 최대공약수
factorial(x) : x의 팩토리얼- time 모듈
localtime() : 시스템에 표시되는 현재 시각 반환
객체 지향 프로그래밍/클래스와 객체 생성/객체 속성 변경
- 객체지향 프로그래밍 : 객체를 이용한 프로그래밍.
1) 객체Object = 속성Attribute(변경 가능) + 기능Function
2) 객체는 클래스Class(속성과 기능을 정의함)에서 생성된다.
3) 장점 : 코드 재활용 및 모듈화가 편하다
- 클래스 생성
1) class를 만든다(class 키워드와 속성, 기능을 이용해서 만듦).
2) class의 생성자를 호출해서 객체를 만든다.
# input
class car: # 'car'라는 이름의 class 만들기
def __init__(self, col, len): # 속성 정의함.
self.color=col
self.length=len
def stop(self): # 기능 정의함
print('stop')
def start(self): # 기능 정의함
print('start')
car1 = car('red', 200) # 'car'라는 class로부터 'car1'이라는 객체 생성.
print(car1.color) # car1 객체의 color속성 출력
print(car1.length) # car1 객체의 length속성 출력
car1.stop() # car1 객체의 stop 기능 사용
car1.start() # car1 객체의 start 기능 사용
====================================================
# output
red
200
stop
start
# 예시.
class cal:
def __init__(self):
self.num1 = 0
self.num2 = 0
self.result = 0
def add(self):
self.result = self.num1 + self.num2
return self.result
def sub(self):
self.result = self.num1 - self.num2
return self.result
def mul(self):
self.result = self.num1 * self.num2
return self.result
def div(self):
self.result = self.num1 / self.num2
return self.result
cal1 = cal()
cal1.num1 = 10
cal1.num2 = 20
print(cal1.add())
print(cal1.sub())
print(cal1.mul())
print(cal1.div())
============================================
30
-10
200
0.5
객체와 메모리
- 객체와 메모리.
=> class로부터 객체가 생성되면 메모리에 저장되고
=> 변수에 객체를 할당하면, 객체 데이터가 아닌 객체의 메모리 주소가 할당된다.
=> 변수는 이 주소를 이용해서 메모리로부터 객체를 참조하여 동작하는 것.
=> 이런 특성으로 인해 reference(참조) 변수 라고도 부름.
클래스 상속
- 클래스는 또 다른 클래스를 상속해서 사용할 수 있다.
# 예시
# input
class normal_car: # normal_car라는 class 생성
def drive(self):
print('my car drive() called.')
def back(self):
print('my car back() called.')
class turbo_car(normal_car): # normal_car class를 상속하는 turbo_car class 생성.
def turbo(self):
print('my car turbo() called.')
car1 = turbo_car()
car1.drive()
car1.back()
car1.turbo()
========================================================
# output
my car drive() called. # normal_car class를 상속한 덕분에
my car back() called. # turbo_car class에 정의하지 않은 기능도 사용 가능하다.
my car turbo() called.
다중 상속
- 2개 이상의 클래스를 상속한다.
상속 방법은 단일 상속과 동일하다.
# input(1)
class car1:
def drive(self):
print('drive~!')
class car2:
def turbo(self):
print('turbo~!!')
class car3:
def fly(self):
print('fly!!!!')
class car(car1, car2, car3): # car class가 car1, car2, car3 class를 상속받음.
def __init__(self):
pass
car1 = car()
car1.drive()
car1.turbo()
car1.fly()
=============================
# output(1)
drive~!
turbo~!!
fly!!!!
# input(2)
class BasicCal:
def add(self, n1, n2):
return n1+n2
def sub(self, n1, n2):
return n1-n2
def mul(self, n1, n2):
return n1*n2
def div(self, n1, n2):
return n1/n2
class DevelopCal:
def mod(self, n1, n2):
return n1%n2
def flo(self, n1, n2):
return n1//n2
def exp(self, n1, n2):
return n1**n2
class cal(BasicCal, DevelopCal):
def __init__(self):
pass
calcul = cal()
print(calcul.add(5,6))
print(calcul.sub(5,6))
print(calcul.mul(5,6))
print(calcul.div(5,6))
print(calcul.mod(5,6))
print(calcul.flo(5,6))
print(calcul.exp(5,6))
=======================================
# output(2)
11
-1
30
0.8333333333333334
5
0
15625
'STUDY > Python' 카테고리의 다른 글
[Python] 웹 크롤링 - requests 라이브러리 소개 / "기본" 사용법 (0) | 2024.03.20 |
---|---|
[Python] html parser - BeautifulSoup (0) | 2024.03.20 |
[Python] 함수 / 중첩함수 / lambda함수 / 실행(main) 파일 (2) | 2024.03.19 |
[Python] 반복문 (0) | 2024.03.19 |
[Operator] 산술 연산자 / 비교 연산자 / 연산자 모듈 (0) | 2024.03.19 |