2023.01.05 (목) 파이썬 4번째 강의를 들었습니다.
[Python 문법 4]
오늘은 class에 대해서 배웠습니다. 언제 어떻게 사용하고, 어떤 장점이 있는지를 중점적으로 알 수 있었습니다.
1. Class : 2가지 방법으로 사용된다.
(1) 변수와 함수를 묶어서 코드를 작성하는 방법 (코드 가독성 높일 수 있음)
(2) 객체지향 구현하는 문법으로 사용
- 객체지향 : 실제 세계를 모델링하여 프로그램을 개발하는 개발 방법론 (가장 객체지향적인 언어는 java)
-협업을 용이하게 하기 위한 목적으로 사용됨
(여러명이 하나의 프로그램을 개발하다보면 다른 사람이 만든 코드를 가져다가 사용할 때,
그 기능을 효율적으로 잘 사용하기 위해서)
-실제 세계를 모델링한다 (네트워크 등 대부분의 기술들이 실제 세계를 모델링해서 개발하는 경우가 많음. 여러 사람이 협업할 때, 개념을 이해하기가 쉬움)
- 식별자 컨벤션
-변수, 함수 : snake_case
-클래스 : PascalCase, UpperCamelCase
- class, self, 사용자 정의 데이터 타입, special methods(__init__(), __add__() 등)
- 상속, super, getter-setter, mangling, method의 종류들(인스턴스, 클래스, 스태틱)
- Class 사용법 : 클래스 선언 (코드 작성), 객체 생성(메모리 사용 / 자원 사용), method* 실행 (코드 실행)
* method : 클래스 안에서 선언된 함수
cf) 함수 사용법 : 함수 선언 (코드 작성), 함수 호출 (코드 실행)
단계
|
클래스
|
실제 세계 비유
|
1
|
클래스 선언
|
설계도 작성
|
2
|
객체 생성
|
제품 생산
|
3
|
method 실행
|
생산된 제품의 기능 사용
|
# [1] 클래스선언 : 코드작성
# 계산기 설계 : Calculator : number1, number2, plus(), minus()
class Calculator:
number1, number2 = 1, 2
def plus(self):
return self.number1 + self.number2
def minus(self):
return self.number1 - self.number2
# [2] 객체 생성 : 메모리 사용
calc1 = Calculator()
calc2 = Calculator()
# [3] 메서드 실행 : 코드 실행
calc1.plus(), calc1.minus()
output >
(3, -1)
- self : 객체 자신 (다른 언어에서는 this)
# calc1.plus() : self == calc1
# self.number1 + self.number2 > calc1.number1 + calc1.number2
# plus의 객체는 calc1
- 스페셜 메서드 : 특별한 기능을 하는 메서드
구분
|
기능
|
특징
|
__init__()
|
생성자 메서드
|
- 객체를 생성할 때 실행
- 변수의 초기값을 설정할 때 주로 사용 - 불량 객체(메서드 사용X)가 만들어질 확률을 줄여줌 |
__add__()
|
+ 연산자를 정의
(연산자, 논리식 모두 가능) |
-int 데이터타입의 +연산과 str 데이터타입의 + 연산이 다르게 수행
-python의 list와 numpy의 ndarray 데이터타입이 수행되는 연산이 다르다. |
__str__(), __repr__()
|
print() 함수 실행을 정의
|
-ipython에서 출력하는 기능을 수행
(마지막 줄에 변수 넣으면 실행되는 거) -repr은 객체의 속성을 보고 싶을 때 많이 사용 |
* __init__() 예시
# 클래스생성 : 설계도작성
class Account:
def __init__(self, balance=20000):
self.balance = balance
def insert(self, amount):
self.balance += amount
def withdraw(self, amount):
if self.balance >= amount:
self.balance -= amount
else:
print(f'잔액이 {amount - self.balance}원 부족합니다.')
# 객체생성 : 메모리사용 : 자원사용
account = Account()
# 메서드실행 : 코드실행 : 기능사용 : 불량품 생산
account.insert(3000)
- 클래스는 사용자 정의 데이터 타입이다.
구분
|
데이터 타입
|
클래스
|
사용자 정의로 만듦
account |
type(account)
-> __main__.Account |
Account
|
사용자 정의로 만들지 않음
data = [1, 2, 3] |
type(data)
-> list |
list
|
- 상속 : 다른 클래스의 변수(메서드)를 가져와서 사용하는 방법
-다른 언어는 다중 상속이 안 되나, 파이썬은 다중 상속이 가능하다.
2. Decorator : 함수에서 중복되는 코드를 빼서 데코레이터 함수로 만들어서 코드를 작성하는 방법
- 원래 있던 함수에 새로운 기능을 추가한 함수로 변경할 때 주로 사용한다.
'AI School 8기 (LIKELION, 22.12~23.05)' 카테고리의 다른 글
[AI School-TIL] SQL(BigQuery) 1일차_23.01.13 (2) | 2024.12.11 |
---|---|
[AI School/TIL] Python 5일차_23.01.06 (0) | 2024.02.23 |
[AI School/TIL] Python 3일차_23.01.04 (0) | 2024.02.23 |
[AI School/TIL] Python 2일차_23.01.03 (0) | 2024.02.23 |
[AI School/TIL] Python 1일차_23.01.02 (0) | 2024.02.23 |