점프 투 파이썬 (7) 클래스

2023. 12. 3. 22:58·Programming/Python

클래스가 뭐지??

이렇게 이해해보자.

반복되는 변수 & 메서드(함수)를 미리 정해놓은 틀(설계도)

 

이게 무슨 말인지 아래를 보자.

전역변수를(global) 불러오면 이전에 계산한 결괏값을 유지하면서 사용할 수 있다.

그렇다면 계산기 2개를 돌리려면 어떻게 해야 하는지 보자.

result1 = 0
result2 = 0

def add1(num):  # 계산기1
    global result1
    result1 += num
    return result1

def add2(num):  # 계산기2
    global result2
    result2 += num
    return result2

print(add1(3))
print(add1(4))
print(add2(3))
print(add2(7))

 

계산기 1의 결과값이 계산기 2에 아무런 영향을 끼치지 않는다.

어? 그럼 계산기가 점점 많아지면 어떻게 하지??!

이럴 때 클래스가 필요하다. 하나의 클래스로 묶어서 만들 수 있다. 코드만 다를 뿐 결과값은 똑같다.

 

이제 클래스가 좀 이해가 된다.

객체가 '붕어빵'이라면 클래스는 '붕어빵 틀'이다!!
객체가 '건물'이라면 클래스는 '설계 도면'이다!!

사칙 연산 클래스 만들기

클래스를 만들 때는 꼭 대문자로 시작해야 하고 ':' 콜론을 붙여줘야 한다.

 

 

클래스 안에 구현된 함수는 다른 말로 메서드(method)라고 부른다.

>>> class FourCal:
...     def setdata(self, first, second):
...         self.first = first
...         self.second = second

>>> a = FourCal()
>>> a.setdata(4, 2)

self 는 객체 a를 의미한다.

a안에 무언가 값을 저장하기 위해서는 self.first 라고 적어야 한다.

self를 명시적으로 적는 것은 파이썬만의 특징이다. JAVA는 이렇게 하지 않는다.

객체를 이용해 클래스의 메서드를 호출하려면 도트(.)를 사용하면 된다.

print(a.first)
4
b = Fourcal()
b.setdata(3,7)
print(b.first)
3

 

객체의 객체변수는 다른 객체의 객체변수에 상관없이 독립적인 값을 유지한다.

클래스에서는 이 부분을 이해하는 것이 가장 중요하다.

 

더하기 기능 만들기

def add(self):
    result = self.first + self.second
    return result

>>> a.add()
6

곱하기, 빼기, 나누기 기능 만들기

a.mul()

a.sub()

a.div()

 

생성자

__init__

객체가 생성될 떄 자동으로 호출되는 메서드다.

setdata와 이름만 다르고 모든 게 동일하다.

항상 무조건 처음에 실행되는 것이다.

def __init__(self, first, second):
    self.first = first
    self.second = second

 

클래스의 상속

MoreFourCal 클래스는 상속을 받아서 이용할 수 있게 하는 것이다.

>>> class MoreFourCal(FourCal):
...     pass

pass 만 써도 모든 기능을 상속을 받는다.

a = MoreFourCal(4,2) 를 넣으면

print(a.add()) = 6 이다.

>>> class MoreFourCal(FourCal):
...     def pow(self):
...         result = self.first ** self.second
...         return result
>>> a = MoreFourCal(4, 2)
>>> a.pow()
16

 

메서드 오버라이딩

자식이 부모를 뒤엎고 새로운 것을 만들고 싶을 때!

SafeFourCal 을 쓰면 된다.

부모와 자녀가 동일한 함수를 가지고 있으면 자녀가 이긴다.

>>> class SafeFourCal(FourCal):
...     def div(self):
...         if self.second == 0:  # 나누는 값이 0인 경우 0을 리턴하도록 수정
...             return 0
...         else:
...             return self.first / self.second

 

클래스변수

객체변수가 아니라 클래스변수가 있다.

클래스 안에 변수를 선언하여 생성한다.

 

 

 


Studying Date : 23.12.03

Studying Source : https://www.youtube.com/watch?v=hY-MlUJc01E, https://wikidocs.net/28

'Programming > Python' 카테고리의 다른 글

점프 투 파이썬 (9) 실습  (1) 2023.12.05
점프 투 파이썬 (8) 모듈, 패키지, 예외 처리, 라이브러리  (1) 2023.12.04
점프 투 파이썬 (6) 입출력  (2) 2023.12.03
점프 투 파이썬 (5) 함수  (1) 2023.12.03
점프 투 파이썬 (4) 제어문 If - While - For  (2) 2023.12.02
'Programming/Python' 카테고리의 다른 글
  • 점프 투 파이썬 (9) 실습
  • 점프 투 파이썬 (8) 모듈, 패키지, 예외 처리, 라이브러리
  • 점프 투 파이썬 (6) 입출력
  • 점프 투 파이썬 (5) 함수
Ctrl_engineer
Ctrl_engineer
Ctrl 키는 혼자일 때보다 다른 키와 함께할 때 진짜 힘을 발휘합니다. 데이터도, 사람도 마찬가지입니다. 연결되고 흐를 때, 세상은 더 나은 방향으로 움직입니다. 저는 데이터의 흐름을 설계하고, 신뢰를 심는 엔지니어가 되고자 합니다. 이곳은, 그 여정의 작은 흔적들을 기록하는 공간입니다.
  • Ctrl_engineer
    Ctrl the flow
    Ctrl_engineer
  • 전체
    오늘
    어제
    • 분류 전체보기 (60)
      • Research (8)
        • Raspberry Pi (8)
      • Data Enginnering (24)
        • Cloud (3)
        • Elastic (6)
        • Database (9)
        • Pipeline (3)
      • CS STUDY (0)
        • Computer Science (0)
        • DataStructure & Algorithm (0)
      • Programming (13)
        • Python (13)
      • Mathematics and Statistics (10)
      • Data Science (3)
        • Data Insight (2)
        • Learning (0)
        • ML & DL (0)
      • DIARY (0)
      • TIL (Today I Learned) (2)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    점프투파이썬
    ssh 비밀번호 없이 접속
    SQL
    heap size
    linear algebra
    부스트코스
    3blue1brown
    proxyjump 설정
    Statistics and Probability
    elasticSearch
    climb-mates
    Khan
    indexing
    Khan Academy
    티스토리챌린지
    오블완
    spark
    라즈베리파이 네트워크 설정
    라즈베리파이5
    py4e
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.1
Ctrl_engineer
점프 투 파이썬 (7) 클래스
상단으로

티스토리툴바