🔍 객체지향 프로그래밍
1. 객체 지향 프로그래밍
- 객체를 이용한 프로그램으로 객체는 속성(attribute)과 기능(function)으로 구성
- 코드 재사용, 모듈화에 좋다.
- 결합도가 낮을 수록 유지보수가 쉽다(이상적)
2. 클래스(Class)
- 객체를 만드는 틀(aka. 붕어빵 틀)
- 객체의 속성과 메서드정의
- 클래스는 하나지만, 객체는 여러개 생성 가능
3. 객체(Object)
- 클래스의 인스턴스(실제로 메모리상에 할당된 것)
- 자신 고유의 속성(attribute)을 가지며 클래스에서 정의한 행위(behavior)를 수행.
- 인스턴스와 객체는 동일
4. 메서드(Method)
- 클래스로부터 생성된 객체를 사용하는 방법으로서 객체에 명령
1. 클래스와 객체 생성
1) 클래스 : 클래스 키워드와 속성(변수), 기능(함수)를 이용해서 만든다.
(1) 선언
class Car: → 클래스 선언
def __init__(self, color, len):
self.color = col
self.length = len
def doStop(self):
print('stop!')
def doStart(self):
print('start!')
(2) 호출 : 인스턴스(변수) car1 생성
car1 = Car('red', 200) → 생성자 호출. 초기화 해줄 속성을 넣어준다.
car1.dostop()
tip) self와 __init__의 이해
[파이썬 기초] 클래스 상속
🔍 클래스 상속 - 클래스는 또 다른 클래스를 상속해서 내 것처럼 사용 가능 Class NormalCar: Class TurboCar(NormalCar): → NormalCar 상속 🗝 생성자 - 객체가 생성될 때 생성자를 호출하면 __init__()..
designingdata.tistory.com
2. 객체 속성 변경
- 객체의 속성은 변경 가능
예시) myPC = NewGenerationPC('myPc', 'i5', '16G', '256G') → 클래스 호출
myPC.cpu = 'i9' → 변경
3. 객체와 메모리의 관계
- 변수는 객체의 메모리 주소를 저장하고 이를 이용해서 객체를 참조
- 주소값을 가지고 참조하기에 레퍼런스 변수라고도 함.
car1 = Car('red', 200)
car2 = car1
car2.color = 'blue'
→ 객체(Car('red', 200))가 레퍼런스 변수(car1)에 바로 들어가는 것이 아니라, 생성된 객체가 있는 메모리의 주소값을 저장
→ car2는 car1은 같은 주소를 공유하기 때문에 car1의 color도 'blue'로 변경
4. 얕은 복사와 깊은 복사
1) 얕은 복사 : 객체 주소값을 복사. 객체 자체가 복사되지 않음.
2) 깊은 복사 : 객체 자체를 복사하는 것. 또 하나의 객체가 만들어짐.
(1) copy 모듈 이용
import copy → copy 모듈 이용
car1 = Car('red', 200)
car2 = copy.copy(car1)
car2.color = 'blue'. → car2를 변경해도 car1은 변하지 않음
(2) list를 이용한 깊은 복사 1(for문 이용)
import copy
scores = [4, 3, 6, 14, 6]
scoreCopy = []
for s in scores:
scoreCopy.append(s) → scores의 값이 하나하나 추가(값만 복사)
(3) list를 이용한 깊은 복사 2(extend 이용)
scoreCopy.extend(scores)
(4) list를 이용한 깊은 복사 3(리스트 자체 함수 이용)
scoreCopy = scores.copy()
(5) list를 이용한 깊은 복사 4(슬라이스)
scoreCopy = scores[:] → 슬라이스한 데이터를 가져옴. [:] : 리스트 전체
tip) 슬라이스 : 연속적 객체(리스트, 튜플,문자열)에 범위를 지정해 가져옴. 새로운 객체를 생성하게 됨.
사용법 : a[start: end : step] ex) a[-3:] : 뒤에서 3번째 부터 가져옴
ex) a[::-3] : 전체를 거꾸로 가져옴
5. 참고문헌
맥스웰과 데자와, 파이썬 기초, 2022.05.26, https://gksid102.tistory.com/21
'Python > Python 기초' 카테고리의 다른 글
[파이썬 기초] 오버라이딩 (0) | 2022.04.28 |
---|---|
[파이썬 기초] 클래스 상속 (0) | 2022.04.28 |
[파이썬 기초] 패키지 (0) | 2022.04.28 |
[파이썬 기초] 모듈이란? (0) | 2022.04.27 |
[파이썬 기초] 함수란? (0) | 2022.04.27 |