- Today
- Total
Recent Posts
Recent Comments
Archives
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- 파이썬 강의
- 파이썬 입문
- selenium
- 파이썬
- 셀레니움
- 대학시험
- Crawling
- 코딩문제
- 파이썬 알고리즘
- 알고리즘 강좌
- 코딩시험
- 크롤링
- 파이썬 자료구조
- gdrive
- 쉬운 파이썬
- 면접 파이썬
- python 중간고사
- 알고리즘
- 파이썬활용
- 알고리즘 강의
- 파이썬3
- 프로그래밍
- 자료구조
- 채용문제
- 자료구조 강의
- c언어
- 중간시험
- 파이썬 강좌
- 기말시험
- python data structure
Notice
반원 블로그
5. 클래스 - 기초 정의 및 인스턴스 생성 본문
개요
객체 지향 프로그래밍 언어를 대표하는 JAVA와 파이썬을 언어론적으로 이해해보자.
객체와 클래스
- 객체 : 내가 만들고 싶은 특정 대상. 다소 범위가 넓음( 자동차 )
- 클래스 : 내가 만들고 싶은 특정 대상을 코드로 표현하는 것. 클래스 내부에는 속성과 메소드로 이루어진다.
- 클래스 내의 속성
- 특정 데이터의 값에 해당
- 자동차 사이즈, 색깔, 현재속도 등 값으로서의 역할
- 코드상으로는 단순한 값일 경우가 많다. 현재속도 = 0, 색깔 = 'red'
- 클래스 내의 메소드
- 기능으로서의 역할
- 클래스 속성에 영향을 줄 수도 안 줄 수도 있다.
- 속성에 영향을 주는 경우 : 브레이크 기능 -> 속도 속성을 감속한다.
- 속성에 영향을 안주는 경우 : 차량의 전체 정보를 조회하는 기능 -> 속성엔 영향을 안준다.
- 코드상으로는 함수로 구현되어있다.
클래스와 인스턴스(instance)
- 클래스는 객체를 참고해서 만든 틀일 뿐이다.(표현한 것 분)
- 이 틀을 참고하여 틀에 맞는 실제 데이터를 만드는데, 이 만들어진 것을 인스턴스(instance)라고 한다.
객체와 클래스와 인스턴스를 비유
- 길거리에 파는 붕어빵을 만들고 싶다고 생각한다. 이 때 붕어빵은 객체(Object)
- 붕어빵의 재료들을 생각하며 틀을 제작한다. 이 때 틀이 클래스(class)
- 이 틀에 재료를 넣어 실제로 붕어빵을 생산해낸다. 이 때 만들어진 붕어빵이 인스턴스(instance)
- 붕어빵을 제작할 때 재료에 따라 만들어지는 붕어빵도 달라진다. 즉, 인스턴스는 서로 독립적이다.
클래스 생성자 메소드 : __init__
- 클래스를 호출하여 인스턴스 생성시 무조건적으로 실행되는 함수.
- 클래스를 통해 인스턴스를 만들 때 필요한 인자들을 넣어주어, 인스턴스를 생성(반환)한다.
- 붕어빵을 만들 때 재료를 다르게 넣을 수 있는 것처럼, 생성자 메소드에 인자를 다양한 값으로 넣어주어 인스턴스를 다양하게 생성할 수 있다.
기본예제 - 정의
class FishBread:
def __init__(self,outer,inner):
#인스턴스 속성 설정
self.outer = outer #겉
self.inner = inner #속
self.count = 10 #남은 횟수
self.eatable = True #먹을 수 있는지 여부
#기능(메소드)을 정의
#조회하기
def print(self):
print("해당 붕어빵 정보 : ", self.outer, self.inner, self.count, self.eatable)
#먹기
def eat(self):
if self.eatable: #먹을 수 있는 경우
print("먹었습니다.")
self.count -= 1
if self.count < 1: #더 이상 남지 않음
self.eatable = False
else:
print("먹을 수 없습니다.")
클래스를 이용한 인스턴스 생성과 메소드 사용
- 이를 통해 왜 어떤 함수는 앞에 . 을 붙여 실행하는지 이해할 수 있다.
class FishBread:
def __init__(self,outer,inner):
#인스턴스 속성 설정
self.outer = outer #겉
self.inner = inner #속
self.count = 10 #남은 횟수
self.eatable = True #먹을 수 있는지 여부
##기능(메소드)을 정의
#조회하기
def print(self):
print("해당 붕어빵 정보 : ", self.outer, self.inner, self.count, self.eatable)
#먹기
def eat(self):
if self.eatable: #먹을 수 있는 경우
print("먹었습니다.")
self.count -= 1
if self.count < 1: #더 이상 남지 않음
self.eatable = False
else:
print("먹을 수 없습니다.")
##메인 영역
f1=FishBread('밀','팥')
f2=FishBread('쌀','슈크림')
#현재 붕어빵 상태
f1.print()
f2.print()
#붕어빵1에 eat 메소드 12번 실행
for i in range(12):
f1.eat()
#현재 붕어빵 상태
f1.print()
f2.print()
#출력결과
해당 붕어빵 정보 : 밀 팥 10 True
해당 붕어빵 정보 : 쌀 슈크림 10 True
먹었습니다.
먹었습니다.
먹었습니다.
먹었습니다.
먹었습니다.
먹었습니다.
먹었습니다.
먹었습니다.
먹었습니다.
먹었습니다.
먹을 수 없습니다.
먹을 수 없습니다.
해당 붕어빵 정보 : 밀 팥 0 False
해당 붕어빵 정보 : 쌀 슈크림 10 True
파이썬 명명 규칙
언더스코어(_)의 특별한 의미
- 접미사 하나를 사용한 경우 : 내부에서 사용한다는 의미
- 접미사 두개를 사용한 경우 : 클래스 내부에 protect로 사용한다는 의미
- 접두사 하나를 사용한 경우 : 파이썬 키워드와의 충돌을 방지한다는 의미
명명규칙
- 패키지와 모듈 이름 : 짧은 소문자 + 언더스코어
- 클래스 이름 : CapWords규칙을 따른다. 단어마다 첫글자는 대문자.
- 예외 이름 : 예외는 클래스이므로 CapWords규칙을 따르고 Error 접미사를 사용한다.
- 전역 변수 이름 : 언더스코어를 붙여서 해당 모듈에서만 쓰이도록 한다.
- 함수 이름 : 소문자 + 언더스코어
- 메서드 이름과 인스턴스 변수 : 소문자 + 언더스코어
- 상수 : 대문자 + 언더스코어
#명명 예시
ClassName
ExceptionName
module_name
package_name
method_name
function_name
function_parameter_name
global_var_name
local_var_name
instance_var_name
GLOBAL_CONSTANT_NAME
'2018~ > Python Skill Up' 카테고리의 다른 글
8. pillow : 이미지 패키지(2) - ImageGrab 모듈과 Image 클래스 (0) | 2019.09.06 |
---|---|
8. pillow : 이미지 패키지(1) - info, crop, thumbnail, resize (0) | 2019.09.06 |
7. pyisntaller - 파이썬 파일을 실행파일로 변환(py to exe) (0) | 2019.09.06 |
6. requests 모듈 - REST API 사용법, curl을 python requests로 변환방법 (0) | 2019.09.06 |
4. rest api (1) - 급식 데이터 조회 (0) | 2019.09.06 |
파이썬 가상환경 개요 설명 (0) | 2019.09.06 |
3. selenium : 웹 드라이버 제어를 통한 자동화 (0) | 2019.09.05 |
2. pyautogui : 키보드 마우스 제어 패키지 (0) | 2019.09.05 |
Comments