클래스: 똑같은 무엇인가를 계속해서 만들어낼 수 있는 도면
객체: 클래스로 만든 피조물이므로 고유성과 독립성이 있다.
class Cookie:
pass #아무 기능을 갖지 않는 껍데기로 보이지만 사실 객체 생성 기능이 있다.
a = Cookie()
b = Cookie()
# Cookie의 결과값을 돌려받은 a와b가 객체이고 이는 마치 함수를 사용하여 결과값을 돌려받는 것과 같다
class FourCal:
pass # 임시로 코드 작성할 때 주로 사용한다.
a = FourCal()
type(a) # <class '_main_.FourCal'>
메서드: 클래스 안에 구현되는 함수/ 클래스에 포함되어 있다는 점만 제외하면 일반 함수와 다를 것 없다.
도트(.): 객체를 통해 클래스의 메서드 호출
*일반적인 함수 만들기
def 함수명(매개변수):
수행할 문장
a.setdata(4,2) # 숫자값 설정
class FourCal:
def setdata(self, first, second): #메서드의 매개변수, 입력값
self.first = first # 4로 지정 , 메서드의 수행문
self.second = second # 2로 지정, 메서드의 수행문
setdata 메서드의 매개변수
i) self, first, second 3개 입력값
ii) self는 특별한 의미를 갖는다.
--> setdata메서드를 호출한 객체 a가 자동 전달
setdata 메서드의 수행문
a = FourCal()
a.setdata(4, 2)
print(a.first) #4
print(a.second) #2
a = FourCal()
b = FourCal()
a.setdata(4, 2)
b.setdata(3, 7)
id(a.first) # a의 first 주소값을 확인= 1839194944
id(b.first) # b의 first 주소값을 확인 = 1839194928
class FourCal:
def setdata(self, first, second):
self.first = first
self.second = second
class FourCal:
def setdata(self, first, second):
self.first = first
self.second = second
def add(self):
result = self.first + self.second
return result
a = FourCal()
a.setdata(4,2)
print(a.add()) # 6
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)
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
정의: 객체가 생성될 때 자동으로 호출되는 메서드
특징: 객체에 초기값 설정할 때 필요, 해당되는 값 전달하여 객체 생성
예시: init
class FourCal:
def __init__(self, first, second):
self.first = first
self.second = second
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(4, 2)
print(a.first) # 4
print(a.second) # 2
정의: 다른 클래스의 기능을 물려받는다.
특징: 기존 클래스를 변경하지 않고 기능추가 혹은 기존 가능 변경 때 사용
class 클래스 이름(상속할 클래스 이름)
class MoreFourCal(FourCal):
pass
a = MoreFourCal(4,2)
a.add() # 6
a.mul() # 8
a.sub() # 2
a.div() # 2
class MoreFourCal(FourCal):
def pow(self):
result = self.first ** self.second
return result
a = MoreFourCal(4,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
정의: 클래스 안에 변수를 선언하여 생성
모양: 클래스이름.클래스변수
특징: 클래스로 만든 객체를 통해서 클래스 변수로 사용 가능 / 값이 변하면 다같이 변함(공유성)
class Family:
lastname = "김"
print(Family.lastname) # 김
a = Family()
b = Family()
print(a.lastname) # 김
print(b.lastname) # 김
Family.lastname = "박"
print(a.lastname) # 박
print(b.lastname) # 박