deda
Deda의 데이터 디자인
deda
전체 방문자
오늘
어제
  • 분류 전체보기 (121)
    • Python (27)
      • Python 기초 (17)
      • Python 데이터분석 (10)
    • SQL (9)
    • Coding test (54)
      • Python 기초문제 (45)
      • LeetCode (9)
    • BigData (2)
    • ZeroBase (3)
    • UX (0)
    • Business Review (1)
    • 통계 & 수학 (17)
      • 통계학 (14)
      • 수학 (3)
    • 스터디 (6)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • 등비수열
  • 파이썬
  • 모듈
  • 미니콘다
  • 함수
  • 릿코드
  • 계산기
  • 통계
  • 빅데이터
  • 최소공배수
  • 팩토리얼
  • 제로베이스
  • 기초수학
  • 코딩
  • pandas
  • 데이터분석가
  • BMI
  • 군수열
  • SQL
  • 프로그래밍
  • 데이터사이언티스트
  • 데이터분석
  • 계차수열
  • matplotlib
  • 부트캠프
  • 등차수열
  • 데이터엔지니어
  • 소인수분해
  • 마이데이터
  • 네카라쿠배

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
deda

Deda의 데이터 디자인

[파이썬 기초] 객체지향 프로그래밍
Python/Python 기초

[파이썬 기초] 객체지향 프로그래밍

2022. 4. 28. 09:23

🔍  객체지향 프로그래밍

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
    'Python/Python 기초' 카테고리의 다른 글
    • [파이썬 기초] 오버라이딩
    • [파이썬 기초] 클래스 상속
    • [파이썬 기초] 패키지
    • [파이썬 기초] 모듈이란?
    deda
    deda
    데이터 분석 / 파이썬 / UX / 정량리서치

    티스토리툴바