Python의 클래스에 대해 알아봅니다.
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))
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))
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
# 클래스 정의
class FourCal:
def setdata(self, first, second):
self.first = first
self.second = second
def add(self):
result = self.first + self.second
return result
def mul(self):
result = self.first * self.second
return result
def sub(self):
result = self.first - self.second
return result
def div(self):
result = self.first / self.second
return result
# 클래스 사용
a = FourCal()
b = FourCal()
a.setdata(4, 2) # a 객체의 first, second 객체변수에는 각각 값 4와 2가 저장
b.setdata(3, 8)
a.add() # 6
a.mul() # 8
a.sub() # 2
a.div() # 2
b.add() # 11
b.mul() # 24
b.sub() # -5
b.div() # 0.375
class 사용.class FourCal:
pass
클래스명(): class의 인스턴스인 객체 생성.a = FourCal() # a객체 생성, a는 FourCal의 인스턴스
type(a) # <class '__main__.FourCal'>
class FourCal:
def setdata(self, first, second): # 메서드의 매개변수
self.first = first # 메서드의 수행문
self.second = second
a.setdata(4, 2) # 매서드 호출위해 도트(.) 연산자 사용
객체.메서드a = FourCal()
a.setdata(4, 2)클래스명.메서드a = FourCal()
FourCal.setdata(a, 4, 2)class FourCal:
def setdata(self, first, second): # 메서드의 매개변수
self.first = first # 메서드의 수행문
self.second = second
a.setdata(4, 2) # a.first = 4, a.second = 2로 설정
a.setdata(4, 2)
b.setdata(3, 7)
a.first # 4
b.first #3
a = FourCal()
a.add() # 오류
__init__를 사용하면 이 메서드는 생성자가 된다.class FourCal:
def __init__(self, first, second):
self.first = first
self.second = second
def add(self):
result = self.first + self.second
a = FourCal(4, 2) # 객체 생성 시 매개변수 전달
a.first # 4
a.second # 2
class 클래스_이름(상속할_클래스_이름) : 클래스 이름 뒤 괄호 안에 상속할 클래스 이름을 넣어주면 된다.class MoreFourCal(FourCal):
def pow(self):
result = self.first ** self.second
return result
a = MoreFourCal(4, 2)
a.add() # 6 -> 상속받은 class의 메서드를 그대로 쓸 수 있다.
a.mul() # 8
a.sub() # 2
a.div() # 2
a.pow() # 16
class SafeFourCal(FourCal):
def div(self):
if self.second == 0: # 나누는 값이 0인 경우 0을 리턴하도록 수정
return 0
else:
return self.first / self.second
a = SafeFourCal(4, 0)
a.div() # 0 # FourCal 클래스와 달리 ZeroDivisionError가 발생하지 않는다.
클래스_이름.클래스변수로 사용할 수 있다.class Family:
lastname = "김"
Family.lastname # 김 # 클래스 변수 사용
a = Family()
b = Family()
a.lastname # 김
b.lastname #김
class Family:
lastname = "김"
# Family 클래스로 만든 객체를 이용해 클래스변수 사용
a = Family()
b = Family()
a.lastname # 김
b.lastname #김
class Family:
lastname = "김"
a = Family()
b = Family()
Family.lastname = "박"
a.lastname # 박
b.lastname # 박
class Family:
lastname = "김"
a = Family()
b = Family()
Family.lastname = "박"
a.lastname = "최"
a.lastname # 최
b.lastname # 박