일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- osmnx
- pyvista
- geojson
- GNN
- MESH
- 좌표거리
- graph
- Python
- 데이터입수
- Set
- 그리드분할
- python최단거리
- GIS
- 파이썬
- 3d
- geopandas
- docker
- 지하철역좌표
- 알고리즘
- 도커
- 컨테이너
- 폴더조사
- 3d데이터
- 이미지빌드
- 도커 레이어
- STL
- GCN
- 패치분할
- 귀여운고래
- 동명이인찾기
- Today
- Total
이것저것 기록
[python] 파이썬 클래스, 생성자 이해하기 본문
그전까지는 주먹구구 식으로 필요한 함수를 아무렇게나 정의해서 갖다쓰는 방식으로 코드를 짰었다.
그런데 그렇게 코드를 설계하다보니까 코드가 너무 더러워지고, 무엇보다 코드가 길어질수록 감당이 안됐다.
그러다가 클래스의 필요성을 절실히 느끼게 됐다.
무엇보다 네이버나 증권사 등에서 제공하는 API가 대부분 클래스를 이용한 객체지향 프로그래밍 방식으로 짜여있기 때문에, 언젠가는 파이썬 클래스에 대한 개념을 확실히 해둘 필요가 있었다.
내가 느낀 클래스의 필요성:
1. 하나의 묶음으로 코드를 깔끔하게 관리하기 위함
2. 기업에서 제공하는 API 이용
어쨌든 이 포스트는 다음 링크의 글을 참고하여 작성했다. (플로우가 똑같음)
1. 클래스란?
쉽게 말해서 클래스는, 변수와 함수를 묶어서 하나의 객체(타입)으로 만드는 것이다.
파이썬에서 클래스를 정의한다는 것은 새로운 데이터 타입을 정의하는 것이기 때문에,
실제로 클래스를 사용하려면 인스턴스라는 것을 생성해야 한다.
클래스가 '틀'이라면 인스턴스는 그 '틀'안에 들어갈 재료 정도로 생각하면 될 것 같다.
클래스와 인스턴스를 생성하는 코드:
#클래스 생성
class doll():
pass
#인스턴스 생성
barbie = doll()
2. 클래스에 메서드 추가하기
클래스 내부에 정의 돼 있는 함수는 특별히 메서드(method)라고 한다.
메서드는 무조건 self라는 인자를 상속 받는다.
#클래스 생성
class doll:
def set_info(self, name, gender, doll_type):
self.name = name
self.gender = gender
self.doll_type = doll_type
def print_info(self):
print("--------------------")
print("Name: ", self.name)
print("Gender: ", self.gender)
print("Type: ", self.doll_type)
print("--------------------")
#인스턴스 생성
barbie = doll()
barbie.set_info('barbie', 'female', 'student')
barbie.print_info()
#인형 하나 더!
prince = doll() #인스턴스 생성
prince.set_info('prince', 'male', 'businessman') #클래스 인스턴스를 통한 메서드 호출 및 값 입력
print(prince.name) #인스턴스 변수에 접근
print(prince.doll_type)
prince.print_info()
클래스 생성 및 인스턴스 생성은 다음 절차만 기억하면 될 것 같다.
-
클래스 정의
-
인스턴스 생성 ( xxx = 클래스이름.() )
-
생성된 인스턴스에 점(.)을 찍어서 인스턴스 변수나 메서드에 접근
3. __init__( ) 생성자
생성자인 __init__(self)는 인스턴스의 생성과 초깃값을 한 번에 처리할 수 있게 도와주는 특별한 메서드이다.
위의 doll 클래스에선 set_info 메서드가 생성자의 역할을 하고 있다.
'코린이 > 코딩 기초 & 알고리즘 공부' 카테고리의 다른 글
[알고리즘] 계산 복잡도(시간 복잡도)란? (0) | 2021.06.13 |
---|---|
[python] exec()을 사용하여 동적 코드 실행하기 (0) | 2021.05.01 |
[python] argparse 사용하기 (0) | 2020.10.26 |
[python] 조건부 표현식, 리스트 표현식, 축약 (0) | 2020.10.26 |
[python] 람다(lamda) 함수 (익명함수) (0) | 2020.10.19 |