[ 객체 지향 언어 ]
파이썬은 모든 것이 객체인 순수 객체 지향 언어이다.
1 : int 클래스로 만든 1을 나타내는 인스턴스
"" : str 클래스로 만든 빈 문자열을 나타내는 인스턴스
가변 VS 불변 타입
가변 타입 객체 : 한번 생성한 인스턴스의 속성 변경 가능 ex) 리스트 클래스
불변 타입 객체 : 한번 생성한 인스턴스의 속성 변경 불가 ex) 튜플 클래스
mutable_object = [1,2,3]
immutable_object = (1,2,3)
mutable_object[0] = 4
print(mutable_object) # [4,2,3]
immutable_object[0] = 4
print(immutable_object) # 에러
불변 타입이라 해도 변수가 가리키는 객체 자체는 바꿀 수 있다. ( 이미 생성된 객체의 속성을 바꾸는 것은 불가능 )
immutable_object = (1,2,3)
# 새로운 인스턴스를 지정해주는 것은 가능하다.
immutable_object = (4,5,6)
immutable_object = (7,8,9,10)
print(immutable_object)
같은 변수로 속성이 다른 튜플을 사용하고 싶은 경우, 기존 튜플의 속성을 바꾸는 것이 아니라
새로운 튜플 인스턴스를 생성하고 기존 튜플이 그 새로 생성된 인스턴스를 가리키도록 만들면 된다.
반면에 리스트는 append 등의 함수를 사용해서 한번 생성한 객체의 속성을 바꿀 수 있다.
| 가변 타입 클래스 | 불변 타입 클래스 |
| list | bool |
| dict | int |
| 직접 작성하는 클래스 | float |
| str | |
| tuple |
직접 작성하는 클래스는 가변 타입이기 때문에 직접 만든 클래스로 인스턴스를 생성한다면 후에도 계속 그 인스턴스의
속성을 수정할 수 있음. 기존의 인스턴스를 변경하고 싶을 경우 새 인스턴스를 굳이 생성할 필요없이 원래 인스턴스의
속성을 변경해주면 된다.
절차 지향 언어와 객체 지향 언어의 차이
절차 지향 언어 : 프로그램을 명령어 들의 순서대로 실행하는 프로그래밍 언어이다. 프로그램에 필요한 데이터와
함수를 묶어서 관리하지 못해 프로그램 안에서 서로 관련된 동작들만 묶어서 관리한다.
객체 지향 언어 : 프로그램을 객체 간의 소통으로 생각한다. 객체가 프로그램의 기본 단위이고, 객체 안에는 데이터의
속성과 행동이 들어있다. 즉 클래스를 이용해 서로 관련있는 데이터와 함수를 객체로 묶어서
사용 할 수 있다.
파이썬의 유용한 함수들
1. ternary expression : Boolean의 값에 따라 다른 값을 리턴
staff = True
staff_string = "abc" if staff else "abcdefg"
print(staff_string) #abc
# staff가 True일 때는 abc가 되고 False일 때는 abcdefg가 리턴된다.
2. list comprehension : 새로운 리스트를 만드는 방법 중 하나
my_list = [1,2,3,4,5,6]
new_list = [ index * 2 for index in my_list ]
print(new_list)
3. zfill 메소드 : 문자열을 최소 몇자리 이상을 가진 문자열로 변환시켜준다. 부족한 부분에는 왼쪽에 문자열 '0'을
채워줌. zfill의 인자보다 이미 더 긴 문자열일 경우 그 문자열을 그냥 그대로 출력한다.
print("abc".zfill(8)) #00000abc
* rjust와 ljust 함수
rjust 함수는 문자열을 오른쪽에 정렬하고 문자열의 총 길이가 인자로 받는 값이 되도록 왼쪽부터 채워준다.
ljust 함수는 문자열을 왼쪽에 정렬하고 문자열의 총 길이가 인자로 받은 값이 되도록 오른쪽을 채워준다.
right = "abcd".rjust(10,"e")
left = "efgh".ljust(10,"d")
print(right) #eeeeeeabcd
print(left) #efghdddddd
f-string으로 똑같이 표현할 수 있음
value1 = "abcd"
print(f"{value1:e>10}") #eeeeeeabcd
value2 = "efgh"
print(f"{value2:d<10}") #efghdddddd
모듈 ( Module )
모듈 : 변수, 함수, 클래스 등을 모아놓은 파일
from [ 모듈의 이름 ] import [ 불러올 변수 / 함수 / 클래스 이름 ]
# 모듈의 이름에서는 확장자명인 ".py"를 빼줘야함
# import 부분에 "*"를 써주면 모듈 안에 있는 모든 변수와 함수, 클래스를 불러올 수 있음
1. randint 함수 : 두 정수 사이에서 랜덤한 정수 하나를 리턴하는 함수
from random import randint
number = randint(1,100)
print(number)
2. uniform 함수 : 두 수 사이에서 랜덤한 소수 하나를 리턴하는 함수
from random import uniform
number = uniform(1,100)
print(number)'Python > 객체지향' 카테고리의 다른 글
| [ 객체 지향 프로그래밍 ] 5일차 ( 상속 ) (0) | 2022.02.10 |
|---|---|
| [ 객체 지향 프로그래밍 ] 4일차 ( 추상화, 캡슐화 ) (0) | 2022.01.29 |
| [ 객체 지향 프로그래밍 ] 2일차 ( __init__ ~ 클래스 메소드 ) (0) | 2022.01.20 |
| [ 객체 지향 프로그래밍 ] 1일차 ( 객체지향 정의 ~ 인스턴스 ) (0) | 2022.01.12 |