λ³Έλ¬Έ λ°”λ‘œκ°€κΈ°

Python

Python - 클래슀 (Class) 1

Python 기초 문법을 κ³΅λΆ€ν•˜λ‹€κ°€ ν΄λž˜μŠ€κ°€ λ‚˜μ™”λŠ”λ°... μ—¬λŸ¬ κ°€μ§€ μ˜μƒμ„ 찾아봐도 도톡 이해가 λ˜μ§€ μ•Šμ•˜λŠ”λ°, λ°”λ‘œ 이해가 λ˜λŠ” 글을 μ°Ύμ•˜λ‹€! 


ν΄λž˜μŠ€λŠ” μ™œ ν•„μš”ν•œκ°€?

  κ°„λ‹¨ν•˜κ²Œ λ§ν•˜μžλ©΄ 틀을 λ§Œλ“œλŠ” 것이닀. 사싀 λ§Žμ€ κ³³μ—μ„œ λΆ•μ–΄λΉ΅ 틀에 λΉ„μœ λ₯Ό ν•˜κΈΈλž˜, μ™€λ‹ΏλŠ” λ“― μ•„λ‹Œ λ“―ν–ˆλŠ”λ°, μ•„λž˜ μ„€λͺ…ν•˜λŠ” 글을 읽으면 틀을 λ§Œλ“ λ‹€λŠ” 것이 이해가 될 것이닀.

 

계산기λ₯Ό 예둜 λ“€μž.

 1+2λ₯Ό λˆ„λ₯΄λ©΄ 3, μ΄μ–΄μ„œ - 와 3을 λˆ„λ₯΄λ©΄ 3 - 3 = 0 κ³Ό 같이 κ³„μ‚°κΈ°μ˜ 연산은 κ³„μ†ν•΄μ„œ ν•  수 μžˆλ‹€. λ˜ν•œ κ³„μ‚°κΈ°μ˜ 연산을 계속 ν•˜κΈ° μœ„ν•΄μ„œλŠ” κ³„μ‚°ν–ˆλ˜ 결괏값을 항상 λ©”λͺ¨λ¦¬μ— μ €μž₯해두어야 ν•œλ‹€.

이λ₯Ό Python으둜 κ΅¬ν˜„ν•˜λ©΄ μ•„λž˜μ™€ κ°™λ‹€.

result = 0 #κ³„μ‚°λœ 값을 μ €μž₯ν•  λ³€μˆ˜

def add(num): # λ”ν•˜λŠ” ν•¨μˆ˜
	global result #μ „μ—­λ³€μˆ˜ μ„€μ •
    result += num # result에 결괏값 μ €μž₯
    return result #결괏값 리턴
    
print(add(3))
print(add(4))

근데 λ§Œμ•½μ— 2λŒ€μ˜ 계산기λ₯Ό μ‚¬μš©ν•΄μ•Ό ν•œλ‹€λ©΄ μ–΄λ–»κ²Œ ν•΄μ•Όν• κΉŒ? 2λŒ€μ˜ κ³„μ‚°κΈ°λŠ” 각각의 결괏값을 μ €μž₯ν•΄μ•Ό ν•˜κΈ° λ•Œλ¬Έμ— add ν•¨μˆ˜ ν•œ κ°œλ‘œλŠ” 결괏값을 λ”°λ‘œ μ €μž₯ν•  수 μ—†λ‹€.

 

이λ₯Ό ν•΄κ²°ν•˜κΈ° μœ„ν•΄μ„œλŠ” ν•¨μˆ˜λ₯Ό ν•œκ°œ 더 λ§Œλ“€μ–΄μ•Ό ν•œλ‹€.

result1 = 0 #κ³„μ‚°λœ 값을 μ €μž₯ν•  λ³€μˆ˜1
result2 = 0 #κ³„μ‚°λœ 값을 μ €μž₯ν•  λ³€μˆ˜2

def add1(num): # λ”ν•˜λŠ” ν•¨μˆ˜
	global result1 #μ „μ—­λ³€μˆ˜ μ„€μ •
    result += num # result에 결괏값 μ €μž₯
    return result1 #결괏값 리턴
    
def add2(num): # λ”ν•˜λŠ” ν•¨μˆ˜
	global result2 #μ „μ—­λ³€μˆ˜ μ„€μ •
    result += num # result에 결괏값 μ €μž₯
    return result2 #결괏값 리턴
    
print(add1(3))
print(add1(4))
print(add2(3))
print(add2(4))

μ§€κΈˆμ€ 두 개둜 λλ‚¬μ§€λ§Œ, λ§Œμ•½μ— 계산기가 더 많이 ν•„μš”ν•΄μ§„λ‹€λ©΄ μ–΄λ–»κ²Œ 될까?

값을 μ €μž₯ν•˜λŠ” λ³€μˆ˜ result와 add ν•¨μˆ˜κ°€ 더 많이 ν•„μš”ν•  것이닀. κ²Œλ‹€κ°€ 빼기와 κ³±ν•˜κΈ°, λ‚˜λˆ„κΈ°κΉŒμ§€ κΈ°λŠ₯을 μΆ”κ°€ν•œλ‹€λ©΄ λͺ¨λ“  ν•¨μˆ˜λ₯Ό 고쳐야 ν•œλ‹€. 이런 경우 클래슀λ₯Ό ν™œμš©ν•΄ 해결이 κ°€λŠ₯ν•˜λ‹€.

 

class Calculator:
    def __init__(self):
        self.result = 0

    def add(self, num):
        self.result += num
        return self.result

cal1 = Calculator()
cal2 = Calculator()

print(cal1.add(3))
print(cal1.add(4))
print(cal2.add(3))
print(cal2.add(7))

Calculator 클래슀λ₯Ό μ •μ˜ν•œ ν›„ 각각 cal1κ³Ό cal2μ—μ„œ (Pythonμ—μ„œ 이λ₯Ό 객체라고 ν•œλ‹€.) ν˜ΈμΆœν•˜μ—¬ μ‚¬μš©ν•˜λ©΄ cal1, cla2κ°€ μ„œλ‘œ λ…λ¦½μ μœΌλ‘œ calculator 클래슀의 λ³€μˆ˜μ™€ ν•¨μˆ˜λ₯Ό μ‚¬μš©ν•  수 μžˆλ‹€. μΆ”κ°€λ‘œ 여기에 λΉΌκΈ° κΈ°λŠ₯을 λ”ν•˜κ²Œ λœλ‹€λ©΄ class μ•ˆμ— λΉΌκΈ° ν•¨μˆ˜λ₯Ό μΆ”κ°€λ‘œ λ„£μ–΄μ£Όλ©΄ λœλ‹€.

class Calculator:
    def __init__(self):
        self.result = 0

    def add(self, num):
        self.result += num
        return self.result
    def sub(self, num):
        self.result -= num
        return self.result

cal1 = Calculator()
cal2 = Calculator()

print(cal1.add(3))
print(cal1.add(4))
print(cal2.add(3))
print(cal2.add(7))
print(cal1.sub(3))
print(cal1.sub(4))
이 글은 "점프 투 파이썬"을 μ°Έκ³ ν•˜μ—¬ μž‘μ„±λ˜μ—ˆμŠ΅λ‹ˆλ‹€. μžμ„Έν•œ λ‚΄μš©μ„ μ°Έκ³ ν•˜κ³  μ‹Άλ‹€λ©΄
https://wikidocs.net/28
 

05-1 클래슀

초보 κ°œλ°œμžλ“€μ—κ²Œ 클래슀(class)λŠ” λ„˜κΈ° νž˜λ“  μž₯벽과도 같은 μ‘΄μž¬μ΄λ‹€. λ…μžλ“€ 쀑에도 ν΄λž˜μŠ€λΌλŠ” 단어λ₯Ό 처음 μ ‘ν•˜λŠ” 이듀도 μžˆμ„ 것이닀. 그러면 λ„λŒ€μ²΄ ν΄λž˜μŠ€κ°€ 무엇인지 ...

wikidocs.net

 

728x90

'Python' μΉ΄ν…Œκ³ λ¦¬μ˜ λ‹€λ₯Έ κΈ€

Python - 클래슀 (Class) 3  (0) 2022.01.10
Python - 클래슀 (Class) 2  (0) 2022.01.09